유니티

AI Navigation

잼잼재미 2023. 12. 14. 18:41

AI Navigation


  • 캐릭터, 몬스터, NPC 등 일정한 위치로 이동하게하는 기능
  • 유니티가 제공하는 알고리즘을 통해 길을 찾고 알아서 판단하여 목적지에 도착

 

 

 

 

설정 방법


1. AI Navigation Install 

 

 

 

 

2. Navigation Area 설정

  • Walkalbe : 걸을 수 있는 구역
  • Not Walkable : 걸을 수 없는 구역
  • Navigation Static : Navigation 기능을 사용하기 위해 활성화

 

 

 

맵 전체를 Bake

 

 

 

Walkable 과 Not Walkable로 걸을 수 있는 구역과 없는 구역을 설정

 

 

3. Obstacle 설정

  • Navigation이 장애물을 회피하면서 경로를 찾기위해 설정
  • 동적인 장애물에는 설정 X

 

 

 

 

 

 

4. NPC 설정

  • Nav Mesh Agen 컴포넌트 추가
  • Collider 컴포넌트 추가
  • NPC 스크립트 추가

 

 

 

 

5. NPC 스크립트 작성

using UnityEngine.AI;

public class NPC : MonoBehaviour
{
    private NavMeshAgent _navMeshAgent;

    [SerializeField] private GameObject target;

    private void Awake()
    {
        _navMeshAgent = GetComponent<NavMeshAgent>();
    }

    private void Update()
    {
        _navMeshAgent.SetDestination(target.transform.position);
    }

}

 

 

6. Target 설정

 

 

NavMeshAgent 사용시 미끄러짐?


 

  • 물체가 목표지점에 도착하고 미끄러지는 현상 발생
  • NavMeshAgent는 Velocity가 존재하기 때문에 Velocity가 Zero가 될 때까지 미끄러짐

 

NavMeshAgent.isStopped = false;	// 다시 움직여야 할 때
NavMeshAgent.isStopped = true;	// 멈춰야 할 때
NavMeshAgent.velocity = Vector3.zero;	// 멈춰야 할 때

 

위 코드를 사용하여 완전히 멈출 수 있다.