Unity/기능

[Unity] NavMesh - SamplePosition

turbulence93 2025. 5. 23. 20:30

SamplePosition 란?

  • NavMesh는 길찾기 기능을 지원한다.
  • NavMesh를 통해 경로 탐색을 하다 보면 다음 경로가 유효한지에 대한 검증이 필요한데,
  • 이때 사용할 수 있는 NavMesh 내장 함수이다.

SamplePosition 함수 요소

public static bool NavMesh.SamplePosition(
    Vector3 sourcePosition,
    out NavMeshHit hit,
    float maxDistance,
    int areaMask
)
  • sourcePosition: 탐색할 위치
  • hit: 탐색 결과 (NavMeshHit 에 저장)
  • maxDistance: sourcePosition으로부터 탐색할 거리
  • areaMask: 탐색할 NavMesh의 영역 정보

SamplePosition 예제

    private Vector3 GetWanderLocation()
    {
        NavMeshHit hit;

        NavMesh.SamplePosition(
     	    transform.position + (Random.onUnitSphere * Random.Range(minWanderDistance, maxWanderDistance)), 
            out hit, 
            maxWanderDistance, 
            NavMesh.AllAreas);

        return hit.position;
    }
  • 현재 위치로부터 랜던함 방향의 좌표를 찾고 해당 좌표를 반환하는 함수
  • NavMesh.Samplepostion은 bool 형식을 반환함으로 if문을 통해 사용 가능
  • 위 코드처럼 랜덤함 좌표를 찾는데 해당 지역에 유효한 좌표가 없다면 false를 반환하여 좌표를 다시 구하게 할 수 있음