C# 如何使用Physics.Checkbox在实例化新游戏对象时防止重叠
我试图通过代码动态生成我的环境对象。我列出了我的环境对象,并通过代码(给定代码)生成它,这工作正常,但问题是对象与对象重叠,即使我曾经检查该位置是否已被占用,然后更改新生成的对象位置C# 如何使用Physics.Checkbox在实例化新游戏对象时防止重叠,c#,unity3d,C#,Unity3d,我试图通过代码动态生成我的环境对象。我列出了我的环境对象,并通过代码(给定代码)生成它,这工作正常,但问题是对象与对象重叠,即使我曾经检查该位置是否已被占用,然后更改新生成的对象位置 public void HomeObjectPlacer() { for (int i = 0; i < ObjectsEnv.Count; i++) { //Physics.CheckBox(ObjectsEnv[i].transform.localScale,);
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);
}
}
}
public void HomeObjectPlacer(){
for(int i=0;i
我想我没有正确使用物理复选框 所以在
控制台
中,您永远不会得到“未实例化”语句?我也有同样的问题。您是如何修复此错误的?因此您永远不会得到控制台中的语句“not instantified.”我也有同样的问题。您是如何修复此错误的?