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.”我也有同样的问题。您是如何修复此错误的?