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