从父级中随机选择子对象并将其设置为活动

时间:2016-05-22 05:49:36

标签: unity3d

我在Unity中制作游戏,但我遇到了一些麻烦。我在父对象中有3个不同的子对象,我想将这3个子对象中的1个随机设置为活动对象,同时禁用其他两个。我希望在与另一个物体碰撞时发生这种情况。

提前致谢。

2 个答案:

答案 0 :(得分:1)

public GameObject parentOfChild;

void OnTriggerEnter(Collider thing)
{

 if("the collision condition")
 {
    int randomChild = Random.Range(0,2);
    if(randomChild == 0)
    {
      parentOfChild.transform.GetChild(0).gameObject.SetActive(true);

      parentOfChild.transform.GetChild(1).gameObject.SetActive(false);

      parentOfChild.transform.GetChild(2).gameObject.SetActive(false);
    }
    else
    if(randomChild == 1)
    {
      parentOfChild.transform.GetChild(0).gameObject.SetActive(false);

      parentOfChild.transform.GetChild(1).gameObject.SetActive(true);

      parentOfChild.transform.GetChild(2).gameObject.SetActive(false);
    }
    else
    if(randomChild == 2)
    {
      parentOfChild.transform.GetChild(0).gameObject.SetActive(false);

      parentOfChild.transform.GetChild(1).gameObject.SetActive(false);

      parentOfChild.transform.GetChild(2).gameObject.SetActive(true);
    }


 }

}

考虑到所有三个孩子在碰撞之前都不可见。如果所有三个孩子都可见,它也会起作用。

  

在parentOfChild中   对象通过你的游戏对象有3个孩子

答案 1 :(得分:0)

我建议您改为这样做

public GameObject parentOfChild;

void OnTriggerEnter(Collider thing)
{
    int randomChild = Random.Range(0,2);

    parentOfChild.transform.GetChild(0).gameObject.SetActive(false);
    parentOfChild.transform.GetChild(1).gameObject.SetActive(false);
    parentOfChild.transform.GetChild(2).gameObject.SetActive(false);

    parentOfChild.transform.GetChild(randomChild).gameObject.SetActive(true);
}