2017-09-08 37 views
0

難以解釋我的問題。我有16瓦,在它們之間9個按鈕:製作位於按鈕位置的gameObject的gameObject子對象

https://i.gyazo.com/7f0402427b37fdba8a267b7a9ca9dc68.png

每個按鈕的背後是一個白色遊戲物體,其在4個瓦片的中心。如果按下一個按鈕,則4個貼圖應圍繞白色gameObject旋轉。 我認爲最好的方法是當你點擊一個按鈕時,那個按鈕周圍的4個瓷磚應該成爲那個按鈕後面的白色gameObject的子元素,所以他們可以用4來旋轉。 我該如何做到這一點,當你按下按鈕時,那個按鈕周圍的瓷磚將成爲該按鈕後面的白色gameObject的子項?

回答

1

有幾種方法可以實現這一點,但它可以或多或少地分解爲您提到的幾個步驟。此方法假定您有一個腳本附加到每個白色對象。

您首先需要生成白色物體正在觸摸的物體列表。這可以通過使用OnCollisionEnter/OnTriggerEnter或通過執行距離檢查來完成。以下是在標記每個彩色方塊之後如何使用OnTriggerEnter的示例。然後,您可以簡單地遍歷列表中的4個對象,並將它們的父項分配給白色方塊:

void SquareClicked() 
{ 
    foreach(GameObject square in NeighborList) 
    { 
     square.transform.parent = gameObject.Transform; 
    } 
    DoRotate(); //this is where you do the rotation of the parent object. 
} 

List<GameObject> NeighborList = new List<GameObject>(); 
void OnTriggerEnter2D(Collider2D col) 
{ 
    if (col.tag == "coloredsquare") //tag each square with this tag. 
    { 
     NeighborList.Add(col.gameObject); 
    } 
} 
+0

感謝您的回覆。我認爲我做錯了什麼事情都沒有發生。 - 我應該將void SquareClicked()添加到按鈕? (我通過將函數放在Start()中進行測試) - 白色的gameobjects有一個box collider,並且選擇了trigger,正方形有一個沒有觸發器的box collider - 我將這個腳本添加到所有的白色gameobjects - I添加標籤。 我做錯了什麼? –

+0

是的,除此之外,還有更多。您將從您使用的任何方法調用SquareClicked來檢測遊戲對象的點擊。如果有一個按鈕組件連接到此白色方塊,則可以使用[onClick監聽器](https://docs.unity3d.com/ScriptReference/UI.Button-onClick.html)來調用此函數的按鈕。 – ryeMoss

+0

但複雜的是按鈕組件不在白色的gameobject上,而是在它前面的按鈕上。 –

相關問題