父母旋转时孩子的位置不会改变

时间:2017-04-20 10:23:32

标签: c# unity3d unity3d-5

我觉得这很简单,但我一直在寻找一个在线解决方案,但找不到合适的结果 - 如果已经写好了就道歉。

我有一个球体,它使用一个简单的脚本在它的Y轴上慢慢旋转:
transform.Rotate(0, Time.deltaTime, 0);

我有一个附加到此球体的子对象,它与父对象一起旋转。到目前为止一切都很好。

我已将枢轴放置到子项的中心,并且我尝试使用父项旋转时获取子对象的位置:

void Update ()
{
    Debug.Log(this.transform.position);
}

然而,更新提供了孩子的位置,就好像它是从父母那里取消的一样。

当你更新时,你们能够指出我在获得孩子的位置时指向我的方向吗?

感谢您的时间和耐心。

1 个答案:

答案 0 :(得分:3)

不确定是否真正了解“当孩子更新时附加到球体父级的位置是什么意思,但我会试一试。

我认为您的层次结构如下所示:

-- Sphere (rotating along its Y axis)
  -- Child (that rotates with "Sphere" parent)
    -- Pivot (in the center of the "Child" object and rotating along its Y axis)
      -- Child2 (that rotates with "Pivot" parent)

如果您希望获得 Child2 相对于 Sphere 的位置,您可以执行以下操作:
Vector3 relativePosition = Child2.transform.position - Sphere.transform.position;

您还可以使用Transform.localPosition来获取对象相对于其父对象的位置。在这种情况下,您可以这样使用它:
Vector3 relativePosition = Child.transform.localPosition + Pivot.transform.localPosition + Child2.transform.localPosition

希望这有帮助,