使gameObject的gameObject子项位于按钮的位置

时间:2017-09-08 19:00:06

标签: c# unity3d

很难解释我的问题。我有16个瓷砖,它们之间有9个按钮:

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

每个按钮后面都是一个白色游戏对象,位于4个图块的中心。如果按一个按钮,4个图块应围绕白色游戏对象旋转。 我认为最好的方法是当你点击一个按钮时,该按钮周围的4个图块应该成为该按钮后面的白色游戏对象的子图形,因此它们可以用4旋转。 我如何做到这一点,当你按下按钮时,该按钮周围的瓷砖将成为该按钮后面的白色游戏对象的孩子?

1 个答案:

答案 0 :(得分: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);
    }
}