我在Unity3D中为Android制作2D游戏。现在我正在制作按钮。此按钮不会对点击/触摸做出正确反应。我点击鼠标并触及两者都有同样的问题。每个按钮都有触发器boxcollider,其大小与对象相同。但是只有当我点击区域时,按钮才会作出反应,即按钮。我不明白为什么会这样。我该怎么办?这是我的代码:
if (Input.GetMouseButtonDown(0)) {
Vector3 i = Camera.main.ScreenToWorldPoint (new Vector3 (Input.mousePosition.x, Input.mousePosition.y, 1));
RaycastHit2D hit = Physics2D.Raycast (i, i);
if (hit.transform != null) {
if (hit.transform.tag == "button") {
hit.transform.gameObject.SetActive(false);
}
}
}
此外,我在鼠标点击上实例化了一个对象" i"检查位置是否正确地将屏幕位置转换为世界,并且工作正常。
答案 0 :(得分:0)
尝试通过这种方式处理它:
if (Input.GetMouseButtonDown(0)) {
Vector3 pos = Camera.main.ScreenToWorldPoint (Input.mousePosition);
Vector2 touchPos = new Vector2(pos.x, pos.y);
Collider2D hit = Physics2D.OverlapPoint(touchPos);
if (hit) {
Debug.Log(hit.transform.gameObject.name);
if (hit.transform.tag == "button") {
hit.transform.gameObject.SetActive(false);
}
}
}
答案 1 :(得分:0)
Physics2D.Raycast
中的第一个参数是原点,第二个参数是direction
,因此您应该从ray.origin
向[{1}}
ray.direction