Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使位于按钮位置的游戏对象成为游戏对象的子对象_C#_Unity3d - Fatal编程技术网

C# 使位于按钮位置的游戏对象成为游戏对象的子对象

C# 使位于按钮位置的游戏对象成为游戏对象的子对象,c#,unity3d,C#,Unity3d,我的问题很难解释。我有16块瓷砖,中间有9个按钮: 每个按钮后面都有一个白色的游戏对象,它位于4个平铺的中心。如果你按下一个按钮,4块牌应该围绕白色游戏对象旋转。 我认为最好的方法是,当你点击一个按钮时,该按钮周围的4个平铺应该成为该按钮后面的白色游戏对象的子对象,因此它们可以与4一起旋转。 我该怎么做,当你按下按钮时,按钮周围的瓷砖将成为按钮后面白色游戏对象的子对象?有几种方法可以实现这一点,但或多或少可以分解为你提到的几个步骤。此方法假定有一个脚本附加到每个白色对象 首先需要生成白色对象正

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

每个按钮后面都有一个白色的游戏对象,它位于4个平铺的中心。如果你按下一个按钮,4块牌应该围绕白色游戏对象旋转。 我认为最好的方法是,当你点击一个按钮时,该按钮周围的4个平铺应该成为该按钮后面的白色游戏对象的子对象,因此它们可以与4一起旋转。
我该怎么做,当你按下按钮时,按钮周围的瓷砖将成为按钮后面白色游戏对象的子对象?

有几种方法可以实现这一点,但或多或少可以分解为你提到的几个步骤。此方法假定有一个脚本附加到每个白色对象

首先需要生成白色对象正在接触的对象列表。这可以通过使用OnCollisionCenter/OnTriggerCenter或执行距离检查来完成。下面是一个在标记每个彩色方块后如何使用OnTiggerEnter的示例。然后,您可以简单地循环列表中的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()
{
foreach(邻里关系中的游戏对象方块)
{
square.transform.parent=gameObject.transform;
}
DoRotate();//这是旋转父对象的位置。
}
List neightrlist=新列表();
无效OnTriggerEnter2D(碰撞的R2D列)
{
if(col.tag==“coloredsquare”)//用此标记标记每个正方形。
{
添加(col.gameObject);
}
}

谢谢您的回复。我想我做错了什么,因为什么都没发生我是否应该将void SquareClicked()添加到按钮?(我通过将函数放入Start()进行了测试)-白色游戏对象有一个框碰撞器,选择了is trigger,正方形有一个没有is trigger的框碰撞器-我将此脚本添加到所有白色游戏对象-我添加了标记。我做错什么了吗?是的,不仅仅是这个代码。您将使用任何方法调用SquareClicked来检测对游戏对象的点击。如果有一个按钮组件连接到这个白色方块上,你可以使用for按钮调用这个函数。但复杂的是,按钮组件不在白色游戏对象上,而是在它前面的按钮上。白色对象是按钮的子对象吗?你需要一种你可以浏览的关系。目前,sqaures和white游戏对象都是同一父对象的子对象,因此具有相同的比例等。按钮是另一父对象的子对象。