【发布时间】:2018-05-19 19:56:50
【问题描述】:
我不知道如何在 Unity3D 中解决这个问题。
示例:用户 a) 对对象执行 90 度顺时针操作 -> 对象 b) 应自动调整其方向,即也执行 90 度顺时针旋转相对于其当前方向。因此,这两个对象具有不同的最终方向。我必须使用四元数。
我尝试了以下方法:
float step = speed * Time.deltaTime;
transform.rotation = Quaternion.RotateTowards(transform.rotation, quatObjectA, Time.time * speed);
和
transform.rotation = Quaternion.Slerp(ransform.rotation, quatObjectA, Time.time * speed);
-> 对象 a) 和 b) 具有相同的终端方向,而不是我想要的(对于这两种方法)
transform.rotation = transform.rotation*quatObjectA;
-> 导致一些奇怪和错误的滞后运动
我想计算对象 a) 的当前方向和目标方向之间的差异,并针对对象 b) 的当前方向应用相同的旋转。
已解决
我想通了。这其实很明显。
Quaternion relativeB = Quaternion.Inverse(ObjectBOld) * ObjectBNew;
transform.rotation = transform.rotation*relativeB;
【问题讨论】:
标签: unity3d rotation quaternions