EX) 마을사람, 동물, 적 몬스터

1. 기본적으로 Navmesh를 이용한다.  이동가능한 맵을 만들고,

2. 아래 코드를 구현한다. 

  1. //범위의 스피어를 만들고, walkRadius : 캐릭터가 한번에 이동할 범위를 정한다.
  2. Vector3 randomDirection = Random.insideUnitSphere * walkRadius;
  1. //현재 캐릭터에다가 이동할 거리를 더한뒤에
  2. randomDirection += transform.position;
  3. NavMeshHit hit;
  4. //만들어진 NavMesh의 범위에 들어온다면 Hit 지점을 반환시킨다.
  5. NavMesh.SamplePosition(randomDirection, out hit, walkRadius, 1);
  6. Vector3 finalPosition = hit.position;
navmesh는 씬당 한개씩만 만들수 있기 때문에

큰 씬으로 만든사람이라면 FinalPosion에서 한번더 영역체크해서 벗어나지 않는경우만 이동시킨다. 

3. 완성!