참조 : SebastianLague
Plane에 네브메쉬 켜고 걸어다닐 수 있는 영역 적용.
장애물 만들고 걸어다닐 수없는 영역 지정.
AI를 부여할 오브젝트를 선택후 Agent부여
그리고 AI를 부여한 스크립트에 아래의 소스 삽입하면 잘 따라댕김.
[RequireComponent (typeof(NavMeshAgent))]
public class Enemy : MonoBehaviour
{
NavMeshAgent pathFinder;
Transform target;
// Start is called before the first frame update
void Start()
{
pathFinder = GetComponent<NavMeshAgent>();
target = GameObject.FindGameObjectWithTag("Player").transform;
}
// Update is called once per frame
void Update()
{
pathFinder.SetDestination(target.position);
}
}
조금더 효율적으로 업데이트한다면 1초에 60번 계산 -> 1초에 4번 계산.
[RequireComponent (typeof(NavMeshAgent))]
public class Enemy : MonoBehaviour
{
NavMeshAgent pathFinder;
Transform target;
// Start is called before the first frame update
void Start()
{
pathFinder = GetComponent<NavMeshAgent>();
target = GameObject.FindGameObjectWithTag("Player").transform;
StartCoroutine(UpdatePath());
}
// Update is called once per frame
void Update()
{
}
IEnumerator UpdatePath() {
float refresRate = .25f;
while(target != null) {
Vector3 targetPosition = new Vector3(target.position.x, 0, target.position.z);
pathFinder.SetDestination(targetPosition);
yield return new WaitForSeconds(refresRate);
}
}
}
반응형