A-Dyu의 개발 일기장

[유니티] 네비메시 미끄러짐/ 회전 느림 본문

유니티/유니티 기능

[유니티] 네비메시 미끄러짐/ 회전 느림

ADyu 2025. 2. 14. 15:58

유니티에서 네비메시를 사용할 때 바로 멈추지 않거나 Angular Speed를 아무리 높게 설정해도 회전 속도가 원하는 만큼 나오지 않을 떄가 있다.

이럴 경우에선 velocity를 zero로 만들거나, 회전값을 바꿔 해결할 수 있다.

 

1.에이전트를 즉시 멈추게 하기

먼저 isStopped를 true로 바꾼다, 하지만 이런 경우에선 바디만 몀추고 실제 계산은 계속 이루어지기 때문에

velocity를 zero로 만들고 updatePosition을 false로 바꿔 해결할 수 있다.(물론 다시 움직일려면 또 바꿔야 한다)

//움직임을 즉시 멈출 때
public MovePause(){
	navAgunt.isStopped = true;
    navAgunt.updatePosition = false;  //계산 정지
    navAgunt.valocity = Vector3.zero; //가속도를 0으로
}

//움직이기 시작할 때(바꾸었던 부분은 복구한다)
public MoveStart(){
	navAgunt.isStopped = false;
    navAgunt.updatePosition = true;
}

 

2.에이전트를 즉시 회전하게 하기

만약 회전이 너무 느리다면 네비메시의 updateRotation을 false로 바꾼 후 직접 rotate값을 수정하면 된다.

void Awake(){
    nav = GetCompornent<NavMeshAgent>();
    nav.updateRotation = false;//에이전트가 rotate값을 계산하지 않게
}
void Update(){
    //빌보드 코드로 로테이션시킴
    Vector3 targetPosition = nav.steeringTarget;//steeringTarget : 계산한 다음 목적지
    targetPosition.y = transform.position.y;
    if (transform.position - targetPosition != Vector3.zero) 
    {
        transform.rotation = Quaternion.LookRotation(transform.position - targetPosition);
    }
    transform.Rotate(0f, -180f, 0f);
    //만약 자연스러운 회전을 원한다면 Mathf.Slerp를 사용
}

코드에선 직접 만든 빌보드 코드를 사용해 자연스러운 회전이 아니지만, 보간 함수를  사용해 자연스러운 회전을 구현할 수 있다.

 

도움받은 포스트들

https://srdeveloper.tistory.com/115

 

[유니티] NavMeshAgent 회전이 느린 문제

NavMeshAgent에 Angular Speed를 아무리 높게 줘도 회전이 늦게 일어난다. (해당 프로퍼티가 초당 회전각도로 알고있는데 아무리 수치를 높여도 회전이 느림) 위와 같이 회전이 몬스터 같은 유닛의 경우

srdeveloper.tistory.com

https://onecoke.tistory.com/entry/Unity3D-NavMeshAgent-%EB%AF%B8%EB%81%84%EB%9F%AC%EC%A7%90-or-%EC%88%9C%EA%B0%84%EC%9D%B4%EB%8F%99-%ED%98%84%EC%83%81

 

[Unity3D] NavMeshAgent 미끄러짐 or 순간이동 현상

현재 개발 중인 게임의 적 유닛은 플레이어를 발견했을 시 공격이 가능한 거리가 될 때까지 플레이어에게 접근한 뒤 공격을 시작한다. 적 유닛은 NavMeshAgent를 이용하여 이동하는데, 멈출 때는 Nav

onecoke.tistory.com

https://mentum.tistory.com/312

 

NavMesh Agent의 회전값이 너무 느릴 때 ( Unity NavMeshAgent Angular speed )

https://answers.unity.com/questions/660646/increase-navmesh-rotation-speed.html 의도한건지는 모르겠지만, NavMesh Agent는 회전값을 아무리 올려도 너무 느리게 움직이는 단점이 있다. # 방법 1 다음과 같이 update문에

mentum.tistory.com

 

예전에 네비메시 작업할 때 이분 영상도 많은 도움이 되었었다.

https://www.youtube.com/watch?v=RmDRjoXUaTI