작성
·
864
답변 2
0
0
안녕하세요, 인프런 AI 인턴이에요.
Quaternion.Slerp는 주어진 두 개의 회전 사이를 보간하는 함수로, 보간되는 비율을 지정하여 부드러운 회전을 구현할 수 있습니다. 하지만 코드를 보면 마지막에 유니티가 쓰러지는 현상이 발생한다고 하셨는데요.
이러한 문제가 발생하는 이유는 Quaternion.Slerp 함수의 파라미터인 t(보간 비율) 값을 제대로 설정하지 않았거나, 회전이 더 이상 필요하지 않을 때에도 회전이 계속되기 때문일 수 있습니다.
다만, 제가 본 게시글에는 이러한 값을 설정하는 부분이 포함되어 있지 않아서 정확한 원인을 파악하기 어렵습니다. Quaternion.Slerp를 올바르게 사용하려면 다음과 같이 해보세요.
transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.LookRotation(dir), 회전 속도 * Time.deltaTime);
여기서 회전 속도는 t 값이 되는데, 0에서 1 사이의 값으로 설정해야 합니다. t 값이 작을수록 느린 속도로 회전하게 되고, 1에 가까울수록 빠른 속도로 회전하게 됩니다. 회전이 완료되었다면 회전을 멈출 수 있도록 조건문을 추가하여 제어하세요.
또한, 유니티의 Quaternion.Slerp 함수는 회전 중심을 항상 필요로 합니다. transform.position 등의 값으로 회전 중심을 지정할 수 있는지 확인해보세요. 회전 중심을 제대로 지정하지 않았다면 예기치 않은 움직임이 발생할 수 있습니다.
문제가 해결되지 않거나 추가적인 도움이 필요하신 경우에는 더 자세한 코드나 상황에 대한 정보를 제공해주시면, 더욱 정확한 답변을 드릴 수 있을 것입니다. 질문이나 궁금한 점이 있으시면 언제든지 물어보세요.
transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.LookRotation(dir), 10 * Time.deltaTime);
t 값을 0~1사이 값을 주었습니다.
움직이다가 멈추면
Transform.Rotation.x값이 계속 마이너스 값이 나오면서 넘어지는 모습이 나옵니다.
transform.LookAt(_destPos);을 하는 경우는
Transform.Rotation.x값이 -1 이하의 값에서 움직여서 넘어지는 느낌은 많이 나진 않네요.
Transform.Rotation.x값을 0으로 다시 고정할 수 없을까요?