【问题标题】:Detect collision inside editor检测编辑器内部的碰撞
【发布时间】:2016-01-28 01:00:51
【问题描述】:

我正在创建一个编辑器扩展来轻松创建 2D 和 3D 关卡。我可以使用箭头键移动生成器框,并在数字键上放置一个分配的预制件。 问题是我想检查一下,如果预制件已经在那个位置,那么它将不允许另一个预制件在那里生成或删除新的预制件。

任何帮助将不胜感激。

【问题讨论】:

    标签: unity3d editor collision bounds


    【解决方案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++;
            }
        }
    }
    

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

    另一个更“基本”的解决方案是保留一个数据结构(如地图),其中包含生成的信息(如已实例化的预制件的坐标):这样,您可以检查如果预制件已在此处实例化,则直接从地图中获取。

    希望这会有所帮助!

    【讨论】:

    • 感谢 Andrea,保持数据结构正常工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-05
    相关资源
    最近更新 更多