다음 코드를 사용하여 게임 캐릭터를 회전시켜 대상을 봅니다.
transform.rotation = Quaternion.Slerp(startQuaternion, lookQuaternion, turningNormalizer*turningSpeed/10f)
startQuaternion은 새로운 대상이 주어 졌을 때 캐릭터의 현재 회전입니다.
lookQuaternion은 캐릭터가보아야 할 방향이며 다음과 같이 설정됩니다.
destinationVector = currentWaypoint.transform.position - transform.position;
lookQuaternion = Quaternion.LookRotation(destinationVector, Vector3.up);
turningNormalizer는 Time.deltaTime
증분 turningSpeed
되어 편집기에서 제공되는 정적 값입니다.
문제는 캐릭터가 대부분의 시간만큼 회전하는 동안 180도에 가까워 야 할 때 문제가 있다는 것입니다. 그런 다음 때때로 흔들리면서 회전을 미러링합니다.
이 잘못 그려진 이미지에서 문자 (오른쪽)는 왼쪽의 원을 향해 회전하기 시작합니다. 왼쪽이나 오른쪽으로 돌리는 대신이 "미러 댄스"를 시작합니다.
- 새로운 방향으로 회전하기 시작합니다
- 그런 다음 갑자기 같은 각도로 스냅되지만 다른 쪽에서는 계속 회전합니다.
대상을 볼 때까지이 "미러링"을 너무 오래 수행합니다. 이것은 쿼터니언, lerling / lerping 또는 다른 것이 있습니까?
EDIT1 : 분명히 문제는 회전 자체에서 발생하지 않습니다. 더 큰 문제는 캐릭터가 회전하는 동안 얼굴을 향해 움직이는 것입니다. 대면과 목표 사이의 각도를 제한함으로써 캐릭터가 움직일 수있을 때 지 터링 / 미러링 회전이 줄어들고 때때로 제거됩니다.
물론 이것은 더 많은 질문을 제기하는데 왜 캐릭터가 문제없이 동시에 움직일 수 없습니까? 운동에 사용되는 코드 :
transform.Translate(Vector3.forward * runningSpeed/10f * Time.deltaTime);