Unity - 覆盖GameObject的位置属性

时间:2015-05-21 06:08:55

标签: c# unity3d override gameobject

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

例如,参加以下游戏对象

ParentGameObject
-Child1
-Child2

现在我想根据Child2的位置定位ParentGameObject,即当我设置ParentGameObject.transform.position时,它应该重新定位关于Child2的所有元素

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

enter image description here

1 个答案:

答案 0 :(得分:3)

如果我理解正确,这就是你想要的。

将父游戏对象的中心/枢轴移动到其中一个子游戏对象。

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;

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