我正在创建一个编辑器扩展来轻松创建 2D 和 3D 关卡。我可以使用箭头键移动发电机盒,并在数字键上放置分配的预制件。 问题是我想检查一下,如果预制件已经位于该位置,那么它将不允许另一个预制件在那里生成,或者删除新的预制件。
如有任何帮助,我们将不胜感激。
最佳答案
我可以在这里考虑两种可能的解决方案。 第一个是使用 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++;
}
}
}
基本上,使用此方法,您检查占据给定区域的碰撞器数量(该区域本身由中心和半径确定)。
另一个更“基本”的解决方案是保留一个数据结构(如 map ),其中包含生成的信息(如已实例化的预制件的坐标):这样,您可以检查如果这里已经实例化了预制件,则可以直接从 map 中获取。
希望这有帮助!
关于unity-game-engine - 检测编辑器内的碰撞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33387930/