AI Navigation
- 캐릭터, 몬스터, NPC 등 일정한 위치로 이동하게하는 기능
- 유니티가 제공하는 알고리즘을 통해 길을 찾고 알아서 판단하여 목적지에 도착
설정 방법
1. AI Navigation Install
2. Navigation Area 설정
- Walkalbe : 걸을 수 있는 구역
- Not Walkable : 걸을 수 없는 구역
- Navigation Static : Navigation 기능을 사용하기 위해 활성화
Map을 Static 설정한다.
맵 전체를 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; // 멈춰야 할 때
위 코드를 사용하여 완전히 멈출 수 있다.
'유니티' 카테고리의 다른 글
칼라 변경 (0) | 2023.12.20 |
---|---|
인벤토리 만들기 (0) | 2023.12.14 |
아이템 정보 만들기 (ScriptableObject) (0) | 2023.12.14 |
인벤토리 스크롤 설정 (Scroll View, Grid Layout Group) (0) | 2023.12.14 |
3D 1인칭 이동 구현 (Input System) (0) | 2023.12.14 |