첫 번째 인물 컨트롤러를 만들려고하고 있는데 내 윤곽 회전을 부드럽게하는 데 문제가 있습니다. 내 LookRotation
스크립트는 내 마우스 입력을 받아 문자 회전에 사용합니다. Quaternion.Slerp()
을 사용하는 데 문제가 있지만 내 모양 회전을 부드럽게하기 위해 Quaternion.Slerp()
을 사용했습니다. 원하는 회전이 현재 회전에서 180도 이상 떨어져있게되면 짧은 경로 (반대 방향)가됩니다. 문제는 코드의 마지막 두 줄에 있습니다. 누구든지이 문제를 방지 할 수있는 방법이 있습니까? 미리 감사드립니다!매끄러운 회전 - 쿼터니언
#region Variables
// Sensitivity variables
[Range(0.0f, 10.0f)] public float horizontalSensitivity = 2.0f, verticalSensitivity = 2.0f;
// Smoothing Variables
[Range(0.0f, 30.0f)] public float smoothAmount = 5.0f;
// Character rotation variables
private Quaternion characterTargetRotation;
private Quaternion cameraTargetRotation;
public Transform character;
public Transform characterCamera;
#endregion
private void Update()
{
float horizontalRotation = Input.GetAxis("Mouse X") * horizontalSensitivity;
float verticalRotation = Input.GetAxis("Mouse Y") * verticalSensitivity;
characterTargetRotation *= Quaternion.Euler(0.0f, horizontalRotation, 0.0f);
cameraTargetRotation *= Quaternion.Euler(-verticalRotation, 0.0f, 0.0f);
character.localRotation = Quaternion.Lerp(_character.localRotation, characterTargetRotation, smoothAmount * Time.deltaTime);
characterCamera.localRotation = Quaternion.Lerp(_characterCamera.localRotation, cameraTargetRotation, smoothAmount * Time.deltaTime);
}
정말'Quaternion.Slerp()'가 필요합니까? 기본 회전의 경우 간단하고 빠른 전달 Quaternion.Lerp() 메소드를 사용하려고 생각했습니다. 'Quaternion.Slerp()'는 회전 값을 구형으로 보간하는데 문제 일 수 있습니다. 'transform.rotation'에 대한 참조가 보이지 않지만 나중에 코드에서 수행한다고 가정합니다. – MadJlzz
@MadJlzz 응답 주셔서 감사합니다, 아마도 Quaternion.Lerp 사용해야하지만 Quildion.Slerp 같은 여전히 문제가 yeilds. – jozza710
@MadJlzz 또한 'character.localRotation'과'characterCamera.localRotation'을 사용하여 회전 (마지막 두 줄)을 바꿉니다. – jozza710