我不知道如何在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;