有幾種方法可以實現這一點,但它可以或多或少地分解爲您提到的幾個步驟。此方法假定您有一個腳本附加到每個白色對象。
您首先需要生成白色物體正在觸摸的物體列表。這可以通過使用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);
}
}
感謝您的回覆。我認爲我做錯了什麼事情都沒有發生。 - 我應該將void SquareClicked()添加到按鈕? (我通過將函數放在Start()中進行測試) - 白色的gameobjects有一個box collider,並且選擇了trigger,正方形有一個沒有觸發器的box collider - 我將這個腳本添加到所有的白色gameobjects - I添加標籤。 我做錯了什麼? –
是的,除此之外,還有更多。您將從您使用的任何方法調用SquareClicked來檢測遊戲對象的點擊。如果有一個按鈕組件連接到此白色方塊,則可以使用[onClick監聽器](https://docs.unity3d.com/ScriptReference/UI.Button-onClick.html)來調用此函數的按鈕。 – ryeMoss
但複雜的是按鈕組件不在白色的gameobject上,而是在它前面的按鈕上。 –