为了账号安全,请及时绑定邮箱和手机立即绑定

unity根据其他物体角度旋转物体

unity根据其他物体角度旋转物体

C#
HUWWW 2022-10-23 10:17:16
我有两个游戏对象。基本问题:“当我旋转第 1 圈时,我想以与因子 x 相同的方式旋转第 2 圈”如何将围绕圆 2 的每个局部轴的旋转与圆 1 的可交互旋转同步,并按因子 x 缩放该旋转?设置 transform.right 相等不起作用,仍然有很多自由度。(局部轴,因为我希望一个或两个游戏对象也倾斜,但彼此无关。)尝试使用旋转矩阵进行数学运算并没有真正奏效,因为它们每帧都被评估,从而永远旋转对象 2。非常感谢!
查看完整描述

1 回答

?
PIPIONE

TA贡献1829条经验 获得超9个赞

假设您仅围绕一个轴旋转(如图所示),您可以使用例如Quaternion.Angle每帧获得以 circle2 度数为单位的旋转差异


private Quaternion lastCircle2Rot;


//...


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

lastCircle2Rot = circle2.transform.rotation;

而不是使用例如Transform.RotateAround相应地转动 circle1


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);

正如默认情况下在本地空间中完成的那样。


查看完整回答
反对 回复 2022-10-23
  • 1 回答
  • 0 关注
  • 158 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号