如何在实例化新游戏对象时使用Physics.Checkbox来防止重叠

时间:2017-04-05 10:18:56

标签: c# unity3d

我试图通过代码动态生成我的环境对象。我创建了一个环境对象的列表,并通过代码(给出的代码)生成它,但是问题是对象是重叠的,即使我使用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。

0 个答案:

没有答案