unity 根据其他物体角度旋转物体
Unity rotate object depending on other objects angle
我有两个游戏对象。基本问题:
"When I spin circle 1, I want to spin circle 2 in the same way manipulated by factor x"
如何将围绕圆 2 的每个局部轴的旋转与圆 1 的可交互旋转同步,并按因子 x 缩放该旋转?设置 transform.right 相等是行不通的,仍然有很多自由度。
(本地轴,因为我希望一个或两个游戏对象也倾斜,但彼此无关。)
尝试使用旋转矩阵进行数学运算并没有真正奏效,因为它们在每一帧都被评估并因此永远旋转对象 2。
非常感谢!
假设您只围绕一个轴旋转(如图所示),您可以使用例如 circle2 的度数来获得旋转差异Quaternion.Angle每帧
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);
如果使用例如正确的或另一个 "clean" 向量你也可以简单地使用
circle1.transform.Rotate(Vector3.right, rotDelta * multiplier);
默认情况下在本地 space 完成。
我有两个游戏对象。基本问题: "When I spin circle 1, I want to spin circle 2 in the same way manipulated by factor x"
如何将围绕圆 2 的每个局部轴的旋转与圆 1 的可交互旋转同步,并按因子 x 缩放该旋转?设置 transform.right 相等是行不通的,仍然有很多自由度。 (本地轴,因为我希望一个或两个游戏对象也倾斜,但彼此无关。)
尝试使用旋转矩阵进行数学运算并没有真正奏效,因为它们在每一帧都被评估并因此永远旋转对象 2。
非常感谢!
假设您只围绕一个轴旋转(如图所示),您可以使用例如 circle2 的度数来获得旋转差异Quaternion.Angle每帧
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);
如果使用例如正确的或另一个 "clean" 向量你也可以简单地使用
circle1.transform.Rotate(Vector3.right, rotDelta * multiplier);
默认情况下在本地 space 完成。