【发布时间】:2019-07-06 18:12:01
【问题描述】:
我正在 Unity 中创建游戏,但遇到了一些问题。我在一个父对象中有 3 个不同的子对象,我想将这 3 个子对象中的 1 个随机设置为活动对象,同时禁用另外两个。我希望在与另一个物体碰撞时发生这种情况。
提前致谢。
【问题讨论】:
-
发布您当前的代码,以便您得到帮助!
标签: unity3d
我正在 Unity 中创建游戏,但遇到了一些问题。我在一个父对象中有 3 个不同的子对象,我想将这 3 个子对象中的 1 个随机设置为活动对象,同时禁用另外两个。我希望在与另一个物体碰撞时发生这种情况。
提前致谢。
【问题讨论】:
标签: unity3d
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 个孩子的游戏对象
【讨论】:
我建议你这样做
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);
}
【讨论】: