我在Unity中创建一个游戏,遇到了一些问题。我在父对象中有3个不同的子对象,我想随机设置这3个子对象中的一个作为活动对象,同时禁用其他两个。我想在与另一个对象碰撞时发生这种情况。先谢了。
s8vozzvw1#
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个子对象的gameobject
uttx8gqw2#
我建议你改做这个
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); }
2条答案
按热度按时间s8vozzvw1#
这是考虑到所有三个子元素在碰撞之前都不可见。如果所有三个子元素都可见,它也会起作用。
在parentOfChild对象中传递具有3个子对象的gameobject
uttx8gqw2#
我建议你改做这个