按钮仅对点击/触摸右侧的点击/触摸做出反应

时间:2015-02-07 13:23:28

标签: unity3d click touch 2d mouse

我在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"检查位置是否正确地将屏幕位置转换为世界,并且工作正常。

2 个答案:

答案 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