【发布时间】:2017-09-10 21:48:55
【问题描述】:
很难解释我的问题。我有 16 个图块,它们之间有 9 个按钮:
每个按钮后面都有一个白色的游戏对象,它位于 4 个图块的中心。如果按下按钮,4 个图块应围绕白色游戏对象旋转。 我认为最好的方法是当您单击一个按钮时,该按钮周围的 4 个图块应该成为该按钮后面的白色游戏对象的子对象,因此它们可以以 4 旋转。 如何做到这一点,当您按下按钮时,该按钮周围的图块将成为该按钮后面的白色游戏对象的子项?
【问题讨论】:
很难解释我的问题。我有 16 个图块,它们之间有 9 个按钮:
每个按钮后面都有一个白色的游戏对象,它位于 4 个图块的中心。如果按下按钮,4 个图块应围绕白色游戏对象旋转。 我认为最好的方法是当您单击一个按钮时,该按钮周围的 4 个图块应该成为该按钮后面的白色游戏对象的子对象,因此它们可以以 4 旋转。 如何做到这一点,当您按下按钮时,该按钮周围的图块将成为该按钮后面的白色游戏对象的子项?
【问题讨论】:
有几种方法可以做到这一点,但它或多或少可以分解为您提到的几个步骤。此方法假定您有一个脚本附加到每个白色对象。
您首先需要生成一个白色物体正在触摸的物体列表。这可以使用 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);
}
}
【讨论】: