我试图通过代码动态生成我的环境对象。我创建了一个环境对象的列表,并通过代码(给出的代码)生成它,但是问题是对象是重叠的,即使我使用Physcis.CheckBox检查如果位置已被占用,那么更改新的产卵物体位置。
public void HomeObjectPlacer() {
for (int i = 0; i < ObjectsEnv.Count; i++)
{
//Physics.CheckBox(ObjectsEnv[i].transform.localScale,);
for (int j = 0; j < envPerCount; j++)
{
Vector3 newPosition = new Vector3(Random.Range(xPosStart, zPosLimit), 0, Random.Range(zPosStart, zPosLimit));
GameObject instance = Instantiate(ObjectsEnv[i], newPosition, Quaternion.identity) as GameObject;
do
{
if (!Physics.CheckBox(instance.transform.GetChild(0).GetComponent<BoxCollider>().center,
instance.transform.GetChild(0).GetComponent<BoxCollider>().size))
{
Debug.Log("instantiated : "+ i);
break;
}
else {
Debug.Log("not instantiated."+ i);
newPosition = new Vector3(Random.Range(xPosStart, zPosLimit), 0, Random.Range(zPosStart, zPosLimit));
instance.transform.position = newPosition;
}
} while (true);
}
}
}
我想我没有正确使用Physics.checkbox。