08
20

 

Unity forum
https://forum.unity.com/threads/solved-random-wander-ai-using-navmesh.327950/

 

 

현재위치에서 랜덤한 'NavMesh' 위의 위치를 구하고 싶은 경우가 있다.

 

    public void Warp(float dist)
    {
        int layer = 1 << NavMesh.GetAreaFromName("Walkable");
        Vector3 pos = RandomNavSphere(transform.position, dist, layer);
        transform.position = pos;
    }

    public Vector3 RandomNavSphere(Vector3 origin, float dist, int mask)
    {
        Vector3 randDirection = Random.insideUnitSphere * dist;
        randDirection += origin;

        NavMesh.SamplePosition(randDirection, out NavMeshHit navHit, dist, mask);
        return navHit.position;
    }

 

위의 코드는 현재 위치를 기준으로 반지름이 dist인 원형 범위 안에서 NavMesh 포인트를 찾는 코드.

걸어서 이동시킬거라면 찾은 포인트가 도달 가능한지 체크한 뒤에 destination으로 설정 하자. 

 

 

COMMENT