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;
我不确定确切的语法。我会更正它,但是这是逻辑。
我有一个复杂的游戏对象(即它是许多其他游戏对象的父对象),我想覆盖它的位置属性。
例如拿下面的游戏对象
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;
我不确定确切的语法。我会更正它,但是这是逻辑。