我在Unity中制作游戏,但我遇到了一些麻烦。我在父对象中有3个不同的子对象,我想将这3个子对象中的1个随机设置为活动对象,同时禁用其他两个。我希望在与另一个物体碰撞时发生这种情况。
提前致谢。
答案 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);
}