Unity - Raycast击中,错误的对手

时间:2016-05-13 07:06:31

标签: unity3d raycasting

这是我的代码:

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);
            }
        }
    }
}

当我点击/触摸一个单元格时,有时击中是好的并且单元格被显示,有时击中总是假的(就像我触摸错误的单元格),有时它取决于我的点击位置(见图像)下文)。

我单击单元格的左侧部分,控制台说我单击左侧的单元格。 wrong raycast

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

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

2 个答案:

答案 0 :(得分:0)

好的,我发现了问题。

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

答案 1 :(得分:0)

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

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