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"。所以你会看到所有的对撞机并再次检查它是否在那里重叠?
这是我的代码:
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"。所以你会看到所有的对撞机并再次检查它是否在那里重叠?