我想实现 让物体绕自身的Y轴以一定的速度旋转90度,代码是这样写的:
void Update(){
if (Input.GetMouseButton(0))
{
Quaternion quater = Quaternion.Euler(0, transform.rotation.y + 90, 0);
transform.rotation = Quaternion.Slerp(transform.rotation,quater, rotateSpeed * Time.deltaTime);
if (Quaternion.Angle(quater, transform.rotation) < 1)
{
transform.rotation = quater;
}
}
}
问题一: 这个物体的初始的rotation的值分别是(0,-90,0);但是按照上面的方法运行后物体旋转 了180度。下图是物体的初始方向
图一:
下图是执行上面代码后的物体方向
图二:
物体并没有旋转90度。可以看那个蓝色的轴,差不多旋转了180度
问题二:
我发现上面的代码好像并不是让物体旋转,因为如果我的物体初始的朝向是图二的话,那么我执行上面的代码后物体是不会旋转的。于是我试着更改rotation的Y的值,我发现无论Y值我改成多少,执行上面的代码后,结果都是图二
问题三:
我想每次旋转物体后把x(旋转的角度)值设为0,这样方便我下一次设置旋转的角度,但是当我加上 x=0这句之后,物体只是旋转了一个很小的角度。不知道是不是因为有了旋转速度的原因。
Quaternion quater = Quaternion.Euler(0, transform.rotation.y + 90, 0);
改为
Quaternion quater = Quaternion.Euler(0, transform.rotation.y + x);
……
Quaternion quater = Quaternion.Euler(0, transform.rotation.y + x);
transform.rotation = Quaternion.Slerp(transform.rotation,quater, rotateSpeed * Time.deltaTime);
x=0;
……
以上就是我的问题,有点多,或许是因为这个旋转方法我使用的不对,如果不这样做,有什么方法可以让物体以一定的速度旋转一个角度呢?
还请大佬指点一下,我将不胜感激。我的wx是: Y2548962922