基于其他物体的角度,Unity如何旋转物体

3
我有两个游戏物体。基本问题是: 当我旋转圆形1时,我希望以相同的方式操纵因子x旋转圆形2。
如何将圆形2围绕其本地轴与圆形1的可交互旋转同步,并通过因子x缩放该旋转?将transform.right设置为相等并不起作用,因为仍然存在太多自由度。 (本地轴,因为我希望一个或两个游戏对象也倾斜,但彼此无关。)
尝试使用旋转矩阵进行数学计算并不奏效,因为它们每帧都会被评估,从而使对象2永久旋转。
非常感谢!

enter image description here

1个回答

4
假设您仅围绕一个单一轴旋转(如图所示),则可以使用例如Quaternion.Angle每帧获取圆2的旋转差异角度。
private Quaternion lastCircle2Rot;

//...

float rotDelta = Quaternion.Angle(lastCircle2Rot, circle2.transform.rotation);
lastCircle2Rot = circle2.transform.rotation;

然后使用例如Transform.RotateAround来旋转圆形。
public float multiplier;

// e.g. rotate around local x = right
Vector3 YourAxis = circle1.transform.right;
circle1.transform.RotateAround(Vector3.zero, YourAxis, rotDelta * multiplier);

如果使用正确或其他“干净”的向量,您也可以简单地使用。
circle1.transform.Rotate(Vector3.right, rotDelta * multiplier);

默认情况下,它在本地空间中完成。

哈,太棒了!非常感谢。 - Flo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接