我正在尝试使用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方法,这就是为什么它不起作用的原因。

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

10-07 22:34