【发布时间】:2020-07-07 09:42:53
【问题描述】:
我正在寻找一种通过检查器窗口设置四元数 (x, y, z, w) 的方法。当我们在 Unity 中单击“调试”模式时,我们会得到所有这些变量。通过 Unity 文档,我了解到这些值介于 0-1 之间。那么我们如何设置角度,例如 90,-90,180,-180,270,.... 这里主要是我想在这个游戏对象的脚本中设置目标旋转,以便游戏对象从初始旋转移动到目标回转。 例如在“正常”窗口中,如果我将 x 的目标旋转设置为 180(在检查器窗口中显示为 -5.008956e-06),则游戏对象从 0 移动到 -180,而不是 +180。这就是我移至“调试”窗口的原因,认为这里设置它有帮助。但是这里的值介于 0-1 之间,那么有人知道如何计算吗?
此外,对于旋转,我正在使用这一行:
transform.localRotation = Quaternion.Slerp(transform.localRotation, targetRotation, Time.deltaTime * RotationSpeed);
【问题讨论】:
-
你为什么想要直接设置四元数?它不应该是必需的,您可以在您的问题中添加您想要实现的目标吗?四元数适用于非常复杂的数学,除非您完全理解它们(从您不理解的问题来看),否则不应直接设置四元数,正如四元数docs 中所指出的那样。您可以使用函数
Quaternion.Euler();输入 eulerangles,Unity 将为您计算四元数,这是任何人在 99.9% 的情况下都应该需要的 -
感谢您的回复。我想在这里实现的是我希望游戏对象从它的初始旋转旋转到它的最终旋转。
-
@Saif 使用
public Vector3 targetRotationV3;并将其应用于var targetRotation = Quaternion.Euler(targetRotationV3);有什么问题?无论如何:不要Slerp使用Time.deltaTime.. 在这种情况下没有什么意义......而是使用一个常数因子,例如0.5f... -
@derHugo 谢谢你,但我不关注你。常数因子是什么意思,如果我使用欧拉,它告诉我浮点数是不允许的。你能举个例子解释一下吗?