【问题标题】:Unity Physics2D.OverlapBox always returns falseUnity Physics2D.OverlapBox 总是返回 false
【发布时间】:2018-03-30 13:46:54
【问题描述】:

我正在尝试使用 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。我是不是做错了什么?

【问题讨论】:

  • 你是说如果你用区域或圆圈交换重叠框它返回true?
  • 这只是在黑暗中拍摄,但是,如果您不将 Z 位置设置为 10,会发生什么?

标签: c# unity3d unity3d-2dtools


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-20
    • 1970-01-01
    • 2022-09-27
    • 1970-01-01
    • 2016-07-20
    • 2021-11-05
    • 2018-11-05
    • 2019-05-06
    相关资源
    最近更新 更多