Unity3d 带插值的摄像机旋转

Unity3d 带插值的摄像机旋转,unity3d,camera,interpolation,quaternions,Unity3d,Camera,Interpolation,Quaternions,我有一个在y轴上用“鼠标X”输入旋转的对象和一个通过slerp四元数跟随对象旋转的摄像机。 不幸的是,当我使用快速鼠标移动旋转对象时,slerp摄影机的旋转停止,就像它撞到墙一样,并且不跟随对象的旋转。 如果没有四元数slerp,它会跟随对象工作,但我需要使用插值 旋转对象(在最新更新中: float rot = Input.GetAxisRaw("Mouse X") * speedrotation; transform.Rotate(0, rot, 0); 旋转摄影机(最新更新中): 尝试使

我有一个在y轴上用“鼠标X”输入旋转的对象和一个通过slerp四元数跟随对象旋转的摄像机。 不幸的是,当我使用快速鼠标移动旋转对象时,slerp摄影机的旋转停止,就像它撞到墙一样,并且不跟随对象的旋转。 如果没有四元数slerp,它会跟随对象工作,但我需要使用插值

旋转对象(在最新更新中:

float rot = Input.GetAxisRaw("Mouse X") * speedrotation;
transform.Rotate(0, rot, 0);
旋转摄影机(最新更新中):


尝试使用EulerAngles!这是制作相机控制器的更好选项

Simple Code:
Vector3 currentCameraEulers;
float rotationDPI = 7f; // I didn't remeber how to call better this thing

void Update(){
float cameraX = Input.GetAxisRaw("Mouse X") * rotationDPI;
if(cameraX != 0f){
currentCameraEulers = new Vector3(0, cameraX, 0);
transform.eulerAngles += currentCameraEulers;
}
}

这应该可以完全正常工作。

试试EulerAngles!这是制作相机控制器的更好选择

Simple Code:
Vector3 currentCameraEulers;
float rotationDPI = 7f; // I didn't remeber how to call better this thing

void Update(){
float cameraX = Input.GetAxisRaw("Mouse X") * rotationDPI;
if(cameraX != 0f){
currentCameraEulers = new Vector3(0, cameraX, 0);
transform.eulerAngles += currentCameraEulers;
}
}

那应该很好。

我认为你应该做旋转摄影机(最新更新)使用EulerAngles也很容易。我尝试过,但什么也没有尝试,我知道发生这种情况是因为跟随的对象的速度太高。使用lerp并因此移动较晚的摄影机遇到了这种情况,我必须降低跟随的对象的速度。我想你应该做旋转摄影机(在LateUpdate中)使用EulerAngles也很容易。我尝试了,但什么也没有尝试,我明白这是因为跟随的对象的速度太高。使用lerp并因此移动得太晚的相机遇到了这种情况,我不得不降低跟随对象的速度。