【发布时间】:2016-01-28 01:00:51
【问题描述】:
我正在创建一个编辑器扩展来轻松创建 2D 和 3D 关卡。我可以使用箭头键移动生成器框,并在数字键上放置一个分配的预制件。 问题是我想检查一下,如果预制件已经在那个位置,那么它将不允许另一个预制件在那里生成或删除新的预制件。
任何帮助将不胜感激。
【问题讨论】:
标签: unity3d editor collision bounds
我正在创建一个编辑器扩展来轻松创建 2D 和 3D 关卡。我可以使用箭头键移动生成器框,并在数字键上放置一个分配的预制件。 问题是我想检查一下,如果预制件已经在那个位置,那么它将不允许另一个预制件在那里生成或删除新的预制件。
任何帮助将不胜感激。
【问题讨论】:
标签: unity3d editor collision bounds
我可以在这里考虑两种可能的解决方案。 第一个是使用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++;
}
}
}
基本上,使用这种方法,您检查占据给定区域的碰撞器的数量(区域本身由中心和半径确定)。
另一个更“基本”的解决方案是保留一个数据结构(如地图),其中包含生成的信息(如已实例化的预制件的坐标):这样,您可以检查如果预制件已在此处实例化,则直接从地图中获取。
希望这会有所帮助!
【讨论】: