Unity3D:相对于孩子移动父游戏对象

时间:2019-08-02 17:25:26

标签: c# unity3d math vector position

enter image description here

因此,我有X and Y game objects。我有一个矢量Z = X - Y,用绿线表示。

另外,我有一个Parent游戏对象,它有一个Child游戏对象。如何移动父级,使子级游戏对象位于Point Y

我尝试过

                  Z -= new Vector3(child.localPosition.x, 0, child.localPosition.z);
                  Parent.transform.position = Z

无法正常工作。 谢谢!

1 个答案:

答案 0 :(得分:3)

要向子对象C移动到Y所需的绝对运动是向量Y-C。如果将此绝对运动应用于父对象,则子对象将被移动相同的量,因为子元素会随着他们的父母。因此,您需要将此绝对运动Y-C应用于父级,然后将C置于y位置。

对于对象“ y”和“ Child”的名称,而“ this”是父对象的情况,这就是步骤:

void moveToYGameObject()
{
    //total absolute movement you want to move
    Vector3 AbsoluteMovement = GameObject.Find("y").transform.position - 
    GameObject.Find("Child").transform.position;
    //add this vector to current parent's (along with child) position
    this.transform.position += AbsoluteMovement;
}

也应该在3D上工作,您的对象不必在XZ平面上。 如果问题是“如何移动父级,以使子游戏对象位于Y点”,则x游戏对象和Z向量不会对问题本身产生任何影响,大豆可能会丢失某些东西。

希望有帮助!