64 lines
2.1 KiB
C#
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);
|
|
}
|
|
}
|