如何使游戏对象在旋转平面中围绕Unity中的另一个游戏对象旋转

时间:2016-08-02 15:40:37

标签: c# unity3d rotation

我有两个游戏对象,sphereOnesphereTwo作为空游戏对象both的子对象。

我已将此C#代码附加到sphereTwo

    void Update () 
   {
    transform.RotateAround(sphereOne.transform.position, new Vector3(0, 1, 0), 100*Time.deltaTime);
    }

这可让sphereTwo围绕sphereOne旋转。

当我旋转父游戏对象both时,它仅在该特定平面上旋转。

enter image description here

如何动态更新旋转球体的变换位置,使其与父对象的旋转位于同一平面上?

1 个答案:

答案 0 :(得分:5)

Transform.RotateAround()中的第二个参数是确定sphereTwo围绕sphereOne旋转的平面方向的轴。现在,你将此设置为静态值new Vector3(0, 1, 0),基本上是世界的向上矢量。

要让轴取而代之的是基于sphereOne的方向,请使用其Transform.up向量 - 这将根据sphereOne'的世界空间轮换而改变。变换:

void Update () 
{
    transform.RotateAround(sphereOne.transform.position, sphereOne.transform.up, 100*Time.deltaTime);
}

(您可以选择使用both.transform.up,具体取决于具体情况。)

希望这有帮助!如果您有任何问题,请告诉我。