汤圆不甜* 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 运筹学排序问题中的在线排序
  • ¥15 关于#flink#的问题:关于docker部署flink集成hadoop的yarn,请教个问题flink启动yarn-session.sh连不上hadoop
  • ¥30 求一段fortran代码用IVF编译运行的结果
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 lammps拉伸应力应变曲线分析
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题