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

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条回答 默认 最新

  • 愤怒的胡来 2021-04-24 02:14
    关注

    应该是帧率的问题吧

    评论

报告相同问题?

悬赏问题

  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料