检测编辑器内部的碰撞

时间:2015-10-28 09:58:48

标签: unity3d editor collision bounds

我正在创建一个编辑器扩展,以轻松创建2D和3D级别。我可以使用箭头键移动发电机箱,并在num键上放置一个预制件。 问题是我想检查一下,如果预制件已经在那个位置,那么它将不允许另一个预制件在那里产生或删除新的预制件。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:1)

我可以考虑两种可能的解决方案。 第一个是使用Physics.OverlapSphere。我在文档中报告了这个例子:

using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour {
    void ExplosionDamage(Vector3 center, float radius) {
        Collider[] hitColliders = Physics.OverlapSphere(center, radius);
        int i = 0;
        while (i < hitColliders.Length) {
            hitColliders[i].SendMessage("AddDamage");
            i++;
        }
    }
}

基本上,使用此方法,您检查占用给定区域的碰撞器数量(区域本身由中心和半径确定)。

另一个,更多&#34;基本&#34;解决方案是保持包含产生的数据结构(如地图)。信息(比如已经实例化的预制件的坐标):这样,如果预制件已在此处实例化,您可以直接从地图检查。

希望这有帮助!