OldBlueWater/BlueWater/Assets/02.Scripts/Interface/IView.cs
NTG_Lenovo 58a582c176 Layer, Tag, Physic 초기화 및 재설정
+ IView, IAiView 분리 및 수정
+ ObjectPool 기능 추가 준비 중
2023-10-18 16:28:15 +09:00

64 lines
2.1 KiB
C#

using UnityEngine;
using UnityEngine.AI;
// ReSharper disable once CheckNamespace
namespace BlueWaterProject
{
public interface IView
{
/// <summary>
/// 시야 사거리
/// </summary>
float ViewRadius { get; set; }
/// <summary>
/// 공격 사거리
/// </summary>
float AtkRange { get; set; }
/// <summary>
/// 주변의 모든 타겟
/// </summary>
Collider[] Targets { get; set; }
/// <summary>
/// 현재의 타겟
/// </summary>
Collider Target { get; set; }
/// <summary>
/// 타겟으로 삼을 레이어
/// </summary>
LayerMask TargetLayer { get; set; }
/// <summary>
/// 가장 가까운 타겟을 찾아 Target에 적용
/// </summary>
/// <param name="centerPos">주변을 검색할 때의 중심이 되는 위치</param>
/// <param name="targetIsTrigger">타겟의 Collider IsTrigger 상태 여부</param>
public void FindNearestTargetInRange(Vector3 centerPos, bool targetIsTrigger = true);
/// <summary>
/// 현재 Target으로 삼을 대상 설정
/// </summary>
/// <param name="value">Target의 Collider</param>
public void SetTarget(Collider value);
/// <summary>
/// 타겟의 특정 거리 내에 있는지 확인
/// </summary>
/// <param name="centerPos">주변을 검색할 때의 중심이 되는 위치</param>
/// <param name="range">특정 사거리(공격 사거리 등)</param>
/// <returns></returns>
public bool IsTargetWithinRange(Vector3 centerPos, float range);
/// <summary>
/// 타겟으로 이동하는 함수
/// </summary>
/// <param name="targetPos">타겟의 위치</param>
/// <param name="speed">이동할 때의 속도</param>
/// <param name="stopDistance">Agent를 사용할 경우의 멈추는 거리</param>
public void MoveTarget(Vector3 targetPos, float speed, float stopDistance = float.MaxValue);
}
}