Unity - Raycast 命中,错误的对撞机

Unity - Raycast hit, wrong collider

这是我的代码:

using UnityEngine;

public class InputController : MonoBehaviour {

    void Update() {
        if (Input.GetMouseButtonUp(0)) {
            var hit = Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Input.mousePosition), Vector2.zero);

            if (hit.collider != null) {
                var e = hit.collider.gameObject;

                Debug.Log(e.transform.position.x + ":" + e.transform.position.y);
            }
        }
    }
}

当我click/touch一个单元格时,有时命中很好并且单元格被显示出来,有时命中总是错误的(就像我触摸了错误的单元格)有时这取决于我的位置点击(见下图)。

我单击单元格的左侧部分,控制台显示我单击左侧的单元格。

我单击单元格的右侧部分,控制台显示我单击了右侧单元格(并显示)。在这种情况下,它是左/右,但它可以是顶部/底部,一个角......

我不知道我的问题是否得到很好的解释,抱歉,我的英语也不是完美的...不要犹豫,问我更多细节!

好的,我找到问题了。

左侧单元格的比例为 2,因此它与右侧单元格重叠。

我猜这是对撞机重叠的问题。你必须重置所有的碰撞器并检查它,它是否与任何物体重叠?

你可以在游戏模式中查看对撞机,开启"Gizmo"。所以你会看到所有的对撞机并再次检查它是否在那里重叠?