【问题标题】:Randomly selecting a child object from parent and setting it as active从父对象中随机选择一个子对象并将其设置为活动
【发布时间】:2019-07-06 18:12:01
【问题描述】:

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

提前致谢。

【问题讨论】:

  • 发布您当前的代码,以便您得到帮助!

标签: unity3d


【解决方案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 个孩子的游戏对象

【讨论】:

    【解决方案2】:

    我建议你这样做

    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);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-17
      • 1970-01-01
      • 1970-01-01
      • 2015-11-10
      • 1970-01-01
      • 1970-01-01
      • 2021-05-07
      • 1970-01-01
      相关资源
      最近更新 更多