Unity:collider2D.bounds.Contains 无法正常工作

Unity: collider2D.bounds.Contains not working properly

我有一个 GameController 对象,它有一个覆盖整个屏幕的方形 2D 碰撞器。在那个 GameController 中有 7 个对象 (Zones),每个对象都有自己的多边形碰撞器。 这是设置:

View

Hierarchy

我想做的是,每当我在大方形对撞机内单击时,检查点击的位置是否在任何这些区域的对撞机内。

这是 GameController 脚本的 OnMouseDown() 代码:

void OnMouseDown ()
{
    Vector3 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);

    if(this.collider2D.bounds.Contains(mousePos)) Debug.Log ("1st Check");

    //'Zones' is a list with all the Zones GameObjects
    foreach (GameObject zone in Zones)
    {
        if(zone.collider2D.bounds.Contains(mousePos))
        {
            Debug.Log ("2nd Check");
        }
    }
}

我不应该 总是 进行“第一次检查”吗?因为它是多余的:如果 OnMouseDown() 因为我在对撞机内部单击而被触发,那么鼠标位置必须在对撞机内部。但我从不这样做,所以我想我在这里遗漏了一些关于 Input.mousePositionScreenToWorldPoint().

问题是 .collider2D.bounds.Contains(mousePos) 收到的是 Vector3,但本应收到的是 Vector2。 将其更改为 .collider2D.bounds.Contains(Vector2(mousePos)) 并且效果很好。