몬스터의 이동은 NavMeshAgent에 의해 관리되고 있다. 이동하면서 회전하기 때문에 회전이 부자연스럽다. 좀더 빠르게 회전하도록 직접 회전로직을 구현해본다.

MonsterCtrl 스크립트의 Awake함수를 수정하고 Update함수를 다음과 같이 추가한다.

updaterotation=false로 자동회전기능을 비활성화 시켰다. updatePosition=false로 자동 추적기능을 끌수도 있다.

void Awake() {
	//중략
    agent = GetComponent<NavMeshAgent>(); //NavMeshAgent 할당
    agent.updateRotation= false; // 자동회전기능 비활성화
	//중략   
}

agent.remaingDistance는 타겟까지 남은 거리이다. agent.desiredVelocity는 장애물을 고려한 이동방향이다.

private void Update() {
    //목적지 까지 남은 거리로 회전여부 체크
    if(agent.remainingDistance >= 2.0f) {
        Vector3 direction = agent.desiredVelocity;
        Quaternion rot = Quaternion.LookRotation(direction);
        monsterTr.rotation = Quaternion.Slerp(monsterTr.rotation, rot, Time.deltaTime * 10.0f);
    }
}

이외 velocity, pathPending, isPathStale 등의 속성이 있다.

 

+ Recent posts