1. 기본적으로 Navmesh를 이용한다. 이동가능한 맵을 만들고,
2. 아래 코드를 구현한다.
//범위의 스피어를 만들고, walkRadius : 캐릭터가 한번에 이동할 범위를 정한다.Vector3 randomDirection = Random.insideUnitSphere * walkRadius;
//현재 캐릭터에다가 이동할 거리를 더한뒤에randomDirection += transform.position;- NavMeshHit hit;
- //만들어진 NavMesh의 범위에 들어온다면 Hit 지점을 반환시킨다.
NavMesh.SamplePosition(randomDirection, out hit, walkRadius, 1);- Vector3 finalPosition = hit.position;
navmesh는 씬당 한개씩만 만들수 있기 때문에
큰 씬으로 만든사람이라면 FinalPosion에서 한번더 영역체크해서 벗어나지 않는경우만 이동시킨다.
3. 완성!
0 댓글