1

我觉得这很简单,但我一直在网上寻找解决方案,但找不到合适的结果——如果已经写好了,我深表歉意。

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

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

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

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

然而,更新提供了孩子的位置,就好像它没有与父母联系一样。

当连接到球体父母更新时,你们能否指出我获取孩子位置的方向?

感谢您的时间和耐心。

4

1 回答 1

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

希望这可以帮助,

于 2017-04-20T11:12:44.980 回答