본문 바로가기
유니티

NavMesh.SamplePosition (NavMesh에 존재하는 가장 가까운 점찾기)

by 유니티세상 2025. 8. 26.
반응형

bool NavMesh.SamplePosition(
    Vector3 sourcePosition,
    out NavMeshHit hit,
    float maxDistance,
    int areaMask
)


무엇을 하나요?

- sourcePosition 근처에서 NavMesh에 존재하는 가장 가까운 점을 찾습니다.
- 찾은 점의 정보가 NavMeshHit hit에 채워지고, 찾았으면 true, 못 찾으면 false.

중요 파라미터
- maxDistance: 얼마나 떨어진 곳까지 찾을지(반경). 너무 작으면 실패가 잦아져요. (지금 코드는 1.0f)
- areaMask: 어떤 Area(Walkable/커스텀 Area 등)만 대상으로 할지 비트마스크로 제한.

반환(hit)에서 자주 쓰는 값
- hit.position: NavMesh 위의 실제 좌표
- hit.normal: 그 지점의 표면 노멀(경사 판단 등 가능)
- hit.distance: sourcePosition과 hit.position 거리
- hit.mask: 충돌한 폴리곤의 Area 마스크

팁: SamplePosition은 “가까운 표면 점”만 보장합니다.
그 지점까지 길이 연결되어 있는지(경로 가능)는 보장하지 않아요.
실제로 이동하려면 아래처럼 경로를 꼭 확인하세요:


NavMeshPath path = new NavMeshPath();
if (agent.CalculatePath(hit.position, path) && path.status == NavMeshPathStatus.PathComplete)
{
    agent.SetDestination(hit.position);
}

반응형