c# - Unity3D:相对于 child 移动父游戏对象-LMLPHP

所以,我有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


不能按预期工作。
谢谢!

最佳答案

将向量Y-C应用于子对象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向量不会对问题本身产生任何影响,大豆可能会丢失一些东西。

希望有帮助!

关于c# - Unity3D:相对于 child 移动父游戏对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57331052/

10-13 06:22