2015-05-21 51 views
1

我有一個複雜的GameObject(即它是許多其他遊戲對象的父級),我想覆蓋它的位置屬性。Unity - 重寫GameObject的位置屬性

例如採取下面的遊戲對象

ParentGameObject
-Child1
-Child2

現在我想相對於定位ParentGameObject到CHILD2的位置,即當我設置ParentGameObject.transform.position它應該重新定位與Child2相關的所有元素

將父對象的位置設置爲零應實際位置爲Child2,但整個遊戲對象應移動。

enter image description here

+0

更多的解釋是非常感謝。我真的不明白你的要求。 –

+0

你是什麼意思的「關於」?你的意思是Child2不應該移動,但所有其他物體? – Botz3000

+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; 

我不確定確切的語法。我會糾正它,但這是邏輯。

+0

我得到的邏輯,我可以通過創建自己的SetPosition()函數來實現,但我想知道重寫位置屬性的方式,所以我可以在那裏實現這個邏輯。 ParentObject.transform.position應該做所有這些東西,有沒有辦法做到這一點? – mdanishs

+1

如果你想重寫,你應該創建自己的繼承GameObject的類。那麼這不會是你想要做的事情,因爲你將無法在視覺編輯器上工作。你爲什麼不使用這個函數? –

+0

@mdanishs _「但我想知道如何覆蓋位置屬性,所以我可以在那裏實現這個邏輯」_ - 這是一個壞主意。你會將這個特定的場景應用於一切,這將是相當災難性的 – MickyD