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

Posted

技术标签:

【中文标题】如何使游戏对象在旋转平面中围绕 Unity 中的另一个游戏对象旋转【英文标题】:how to make a gameObject rotate around another gameObject in Unity in the rotating plane 【发布时间】:2016-08-02 15:40:36 【问题描述】:

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

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

private void Update() =>
    transform.RotateAround(sphereOne.transform.position, 
        new Vector3(0, 1, 0), 100 * Time.deltaTime);

这让sphereTwo 围绕sphereOne 旋转。

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

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

【问题讨论】:

在正确的平面上将它的位置向量设置为其父级的位置向量? 这里的秘密是你有一个空的游戏对象(通常称为“标记”)来“持有”这些东西。 Difficulty with rotating child around parent axes的可能重复 【参考方案1】:

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

要使轴基于sphereOne 的方向,请改用其Transform.up 向量 - 这将根据sphereOne 变换的世界空间旋转而改变:

private void Update() 

    transform.RotateAround(sphereOne.transform.position, sphereOne.transform.up, 100*Time.deltaTime);

(您也可以使用both.transform.up,视情况而定。)

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

【讨论】:

没错,但是 OP 需要学习如何堆叠转换以实现这样的东西!

以上是关于如何使游戏对象在旋转平面中围绕 Unity 中的另一个游戏对象旋转的主要内容,如果未能解决你的问题,请参考以下文章

我需要使用 c# 将一个游戏对象旋转到 Unity 中的另一个游戏对象,但我希望旋转仅在 z 中

如何复制父对象的旋转保持自旋转,因为它在unity3d中

带有 Unity 3D 的 C#:当用户移动鼠标时,如何使相机围绕对象移动

Unity Rigidbody2D 手册

如何在 Unity 的另一个场景中访问游戏对象 [重复]

如何在编辑器中为 Unity 中的旋转平台脚本添加列表