gpt4 book ai didi

c# - unity 根据其他物体角度旋转物体

转载 作者:行者123 更新时间:2023-11-30 15:14:19 26 4
gpt4 key购买 nike

我有两个游戏对象。基本问题:“当我旋转圆圈 1 时,我想以与因子 x 操纵相同的方式旋转圆圈 2”

如何将围绕圆 2 的每个局部轴的旋转与圆 1 的可交互旋转同步,并按因子 x 缩放该旋转?将 transform.right 设置为相等是行不通的,仍然有很多自由度。(本地轴,因为我希望一个或两个游戏对象也倾斜,但彼此无关。)

尝试使用旋转矩阵进行数学计算并没有真正奏效,因为它们在每一帧都被评估并因此永远旋转对象 2。

非常感谢!

enter image description here

最佳答案

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

private Quaternion lastCircle2Rot;

//...

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

比使用例如 circle1 一致地转动 circle1 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);

因为它默认在本地空间完成。

关于c# - unity 根据其他物体角度旋转物体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55143330/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com