我觉得这很简单,但我一直在寻找一个在线解决方案,但找不到合适的结果 - 如果已经写好了就道歉。
我有一个球体,它使用一个简单的脚本在它的Y轴上慢慢旋转:
transform.Rotate(0, Time.deltaTime, 0);
我有一个附加到此球体的子对象,它与父对象一起旋转。到目前为止一切都很好。
我已将枢轴放置到子项的中心,并且我尝试使用父项旋转时获取子对象的位置:
void Update ()
{
Debug.Log(this.transform.position);
}
然而,更新提供了孩子的位置,就好像它是从父母那里取消的一样。
当你更新时,你们能够指出我在获得孩子的位置时指向我的方向吗?
感谢您的时间和耐心。
答案 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
希望这有帮助,