c# - unity Physics2D.OverlapBox 总是返回false

标签 c# unity3d unity3d-2dtools

我正在尝试使用 Physics2D.OverlapBox 检查鼠标点击时碰撞器是否在鼠标下方。 OverlapArea 和 OverlapCircle 有效,但 OverlapBox 无效,我不确定为什么!

这是代码

void Update () {
    if (Input.GetButtonDown("Fire1"))
    {
        Vector3 mousePosition = Input.mousePosition;
        mousePosition.z = 10;
        Vector2 position = Camera.main.ScreenToWorldPoint(mousePosition);
        bool colliderHere = Physics2D.OverlapBox(mousePosition, new Vector2(3,3), 0, roomLayer);
        Debug.Log(position + " — " + colliderHere);
    }
}

我正在尝试使用一个宽度和长度各为 3 个单位的框,以鼠标位置为中心。 由于某种原因,这总是返回 false。我做错了什么吗?

最佳答案

您将 mousePosition 而不是 position 传递给 OverlapBox 方法,这就是它不起作用的原因。

此外,请记住,如果您单击作为触发器 IF 的碰撞器,OverlapBox 将返回 null(因此 colliderHere = false) Physics 2D 中的设置 Queries Hit Triggers 已关闭。

关于c# - unity Physics2D.OverlapBox 总是返回false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49575669/

相关文章:

c# - 检查脚本相同时哪个对象与另一个对象发生碰撞

c# - 统一: Can't find UI Layout Element Max Size

c# - 调试进程的转储代码

c# - asp.net c# 中 session 变量范围的范围是什么?

c# - Unity C# 数组类型错误(从 unityscript 转换时)

c# - Unity - 使用从网络加载的 64 多个单独的地球卫星图 block 完全包裹球体

c# - 如何根据数据库列的值制作动态选项标签

c# - 在没有 unity3d 编辑器的情况下调试 c#

unity3d - 在 unity 5 中让 UI 对象吞下触摸的最优雅的方法是什么?