我试图检测鼠标在3D场景上的2D精灵上单击。Physics2D.OverlapPoint()返回总是为空
我的所有Sprite都有一个Box Collider 2D(放置良好)和一个脚本,但是一直是null。我也尝试将Update()函数放在GameEngine GameObject上的脚本上,但我得到了相同的结果。
void Update() {
if (Input.GetMouseButtonDown(0)) {
Vector2 mouse_position = Camera.main.ScreenToWorldPoint (Input.mousePosition);
Collider2D hit = Physics2D.OverlapPoint (mouse_position);
if (hit) {
Debug.Log ("Hit" + hit.transform.name);
} else {
Debug.Log (hit);
}
}
}
void OnMouseDown() {
Debug.Log ("Hit " + this.name);
}
我建议是使用UnityEngine.EventSystems和实施以下这些接口 IPointerClickHandler IPointerDownHandler IPointerEnterHandler IPointerExitHandler IPointerUpHandler 或在它的最基本的层面EventTriggers https://unity3d.com/学习/教程/主题/用户界面 - 用户界面 - 用户界面 - 用户界面 - 事件 - 触发器 – Rob
亚瑟 - 你在做什么**是完全错误的**,嘿:)它更容易。除了其他任何东西,**一定要阅读这个**:http://stackoverflow.com/a/38311402/294884 – Fattie
确实罗布已经完全解释它给你很好 – Fattie