【发布时间】:2021-12-18 23:23:38
【问题描述】:
我试图让一个对象匹配另一个对象的旋转增量。因此,如果对象 A 围绕 Y 轴旋转 90 度,我希望对象 B 也围绕 Y 轴旋转 90 度。因为我想在每一帧都这样做,所以我保存了两个对象的初始旋转。我尝试这样做,基于forum post:
objectB.transform.localRotation = (initialObjectARotation * Quaternion.Inverse(objectA.transform.localRotation)) * initialObjectBRotation;
问题是现在旋转是反转的(我不确定这是正确的术语,但如果我向右旋转objectA,那么objectB 向左旋转等等)。我该如何解决这个问题?
【问题讨论】:
-
他们有相同的父对象吗?或者你为什么使用局部旋转?
-
我正在使用
localRotation,因为我希望它独立于父母的轮换。 -
但是
localRotation(=相对于父级)正是不是您想要使用的,而是全局绝对值rotation... -
是的,你是对的,我的意思是我希望它相对于父母工作。这不是这里的主要问题,因为两个游戏对象都没有父对象。
标签: c# unity3d rotation quaternions