반응형
1. 돌아다닐 영역 설정
01 Window - Navigation 클릭
02 Object - Navigation Static 클릭
03 Bake탭에 들어가서 Bake누르면 영역 설정 완료
04 움직일 GameObject에 NavMeshAgent 추가
Base Offset, Height등 조절하기
2. 랜덤으로 돌아다니기
01 현재 게임 오브젝트에 부탁된 NavMeshAgent 컴포넌트를 찾아 agent변수에 할당
NavMeshAgent agent;
private void Start()
{
agent = GetComponent<NavMeshAgent>();
}
02 동물이 목적지에 도착하거나 경로를 탐색중이지 않을때만 돌아다니게 하기
if (!agent.pathPending && agent.remainingDistance < 0.5f)
NavMeshAgent 알아보러 가기
동물 랜덤한 위치로 이동시키기
Vector3 randomDirection = Random.insideUnitSphere * 5f;
randomDirection += transform.position;
03 랜덤으로 회전 시키기
float randomYRotation = Random.Range(0f, 360f);
Quaternion randomRotation = Quaternion.Euler(0f, randomYRotation, 0f);
transform.rotation = randomRotation;
04 새로운 도착지 설정
NavMeshHit hit;
NavMesh.SamplePosition(randomDirection, out hit, 10f, NavMesh.AllAreas);
Vector3 targetPos = hit.position;
agent.SetDestination(targetPos);
3. coolDown 설정
01 coolDown 시간 설정
[SerializeField] float cooldownTime;
float cooldownTimer;
02 랜덤으로 coolDown 설정
private void Start()
{
cooldownTimer = Random.Range(0, cooldownTime);
}
03 coolDown타이머가 아직 남아 있는 경우 못 걸어다니게 하기
if (cooldownTimer > 0)
{
cooldownTimer -= Time.deltaTime;
return;
}
04 coolDown타이머 갱신
cooldownTimer = cooldownTime;
4. 결과 영상
반응형
'유니티 공부 > Unity' 카테고리의 다른 글
Unity - Tilemap, Tile Palette(도구들 설명)기초 (0) | 2023.08.16 |
---|---|
Unity - 3D모드 2D로 바꾸는 법 (0) | 2023.08.16 |
Unity - NavMeshAgent (0) | 2023.08.02 |
Unity - SerializationException: Type 'UnityEngine.MonoBehaviour' in Assembly 'UnityEngine.CoreModule 에러 고치는 법 (0) | 2023.08.02 |
Unity - NPC클릭하면 플레이어 쳐다보게 하는 법 (0) | 2023.07.21 |
댓글