unity-game-engine - 检测编辑器内的碰撞

标签 unity-game-engine editor collision bounds

我正在创建一个编辑器扩展来轻松创建 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/

相关文章:

unity-game-engine - 获取unity 3d中2d对象的宽度

editor - 如何在 Notepad++ 中使用项目符号和编号?

扩展单行编辑声明的 CSS 编辑器

java - 重写toString方法并避免碰撞

java - 扫描二维 boolean 数组以找到最接近的真实坐标

c# - MLAgents Agent 的训练并没有进步

crash - Unity引擎崩溃4.2和4.3 : Execution Engine Exception SIGILL

azure - 运行 Unity 的 Xbox Live 登录以验证 Azure 应用服务/移动服务

bash - 通过打开包含内容的文本编辑器来捕获用户输入

ios - Swift 和 Spawning 对象的评分方法