Unity - 覆盖游戏对象的位置属性

Unity - Overriding GameObject's position attribute

我有一个复杂的游戏对象(即它是许多其他游戏对象的父对象),我想覆盖它的位置属性。

例如拿下面的游戏对象

ParentGameObject
-Child1
-Child2

现在我想根据 Child2 的位置定位 ParentGameObject,即当我设置 ParentGameObject.transform.position 时,它应该根据 Child2

重新定位所有元素

将父对象的位置设置为零实际上应该定位 Child2,但整个游戏对象应该移动。

如果我没理解错的话,这就是你想要的。

将父游戏对象的 center/pivot 移动到子游戏对象之一。

Vector3 object2Pos = Object2.transform.position;
int deltaX = object2Pos.x;
int deltaY = object2Pos.y;
int deltaZ = object2Pos.z;
foreach(GameObject childObj in parentGameObject.Children)
{
    childObj.transform.position.x -= deltaX;
    childObj.transform.position.y -= deltaY;
    childObj.transform.position.z -= deltaZ;
}
//Now to bring back all objects where ever they were,
parentGameObject.transform.position.x += deltaX;
parentGameObject.transform.position.y += deltaY;
parentGameObject.transform.position.z += deltaZ;

我不确定确切的语法。我会更正它,但是这是逻辑。