汤圆不甜*
2020-04-10 22:53
采纳率: 0%
浏览 1.7k

Unity 使物体以一定的速度旋转特定的角度

我想实现 让物体绕自身的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

1条回答 默认 最新

相关推荐 更多相似问题