【发布时间】:2021-02-17 17:49:18
【问题描述】:
我有一个提供四元数的传感器,我想将其应用于游戏对象。
我目前的工作代码如下:transform.rotation = new Quaternion(x, y, z, w);
这可以正常工作,它会按照它应该旋转的方式修改它所连接的 GameObject 的旋转。
但是问题是每帧都构建一个新对象看起来很浪费,所以我想修改现有的。我试过以下代码:transform.rotation.Set(x, y, z, w);
这段代码根本不会修改 GameObject 的旋转。
我可以修改GameObject的四元数而不每次都构造一个新对象吗?
【问题讨论】:
-
手动设置四元数充其量是愚蠢的。据我所知,Unity 的四元数是结构,因此没有 clases 的迁移内存开销(结构是一种值类型,意味着当您分配一个“新”时,它只是将值复制过来)
-
就创建“新”四元数的惩罚而言,您必须做的工作量来重新创建生成四元数的数学,恕我直言,打败了puprose。
-
感谢您的评论,抱歉回复晚了!我不是在计算四元数,这就是传感器给我的。实际上,我在转换为 Euler 时遇到了问题,这就是我切换到四元数的原因,因为那时我只是传递值,不能搞砸它们。 :) 我接受的答案适用于此目的。
标签: c# unity3d quaternions