c#-根据其他对象角度统一旋转对象

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

如何将围绕圆2的每个局部轴的旋转与圆1的可交互旋转同步并使旋转按比例x缩放?设置transform.right等于不起作用,仍然有很多自由度.
(局部轴,因为我希望一个或两个游戏对象也都倾斜,但彼此不相关.)

根据旋转矩阵在每一帧进行评估,并因此旋转对象2永恒的事实,尝试使用旋转矩阵进行运算并没有真正解决.

非常感谢!

enter image description here

解决方法:

假设仅绕一个轴旋转(如图所示),您可以使用例如每帧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);

如果使用例如正确的或另一个“干净的”向量,您也可以简单地使用

circle1.transform.Rotate(Vector3.right, rotDelta * multiplier);

因为认情况下是在本地空间完成的.

相关文章

前言 本文记录unity3D开发环境的搭建 unity安装 unity有中文...
前言 有时候我们希望公告牌跟随镜头旋转永远平行面向屏幕,同...
前言 经过一段时间的学习与实际开发,unity3D也勉强算是强行...
前言 在unity中我们常用的获取鼠标点击的方法有: 1、在3D场...
前言 在之前的例子中,我们都没有用到unity的精髓,例如地形...
这篇文章将为大家详细讲解有关Unity3D中如何通过Animator动画...