UI图像的统一触控

时间:2015-04-28 12:47:36

标签: android unity3d multi-touch unityscript

我有一个多点触控系统,可以正常使用具有collider2d的对象(将它们用作按钮),我可以在我的Android手机中移动播放器。 但是,当我使用UI画布系统中的图像并将此代码添加到图像时,它没有检测到任何东西?! 这是我的代码:

using UnityEngine;
using System.Collections;

public class Jump : MonoBehaviour {

public float jumpForce;
private GameObject hero; 

void Start () {
    hero = GameObject.Find("hero"); 
}

void Update () {

    if (Input.touchCount > 0)
    {
        Touch[] myTouches = Input.touches;
        for(int i = 0; i < Input.touchCount; i++)
        {
            if(Input.GetTouch(i).phase == TouchPhase.Began)
            {
                CheckTouch(Input.GetTouch(i).position, "began");
            }
            else if (Input.GetTouch(i).phase == TouchPhase.Ended)
            {
                CheckTouch(Input.GetTouch(i).position, "ended");
            }
        }

    }
}

void CheckTouch (Vector3 pos, string phase)
{

    Vector3 wp = Camera.main.ScreenToWorldPoint (pos);
    Vector2 touchPos = new Vector2 (wp.x, wp.y);

    Collider2D hit = Physics2D.OverlapPoint(touchPos);

    if(hit.gameObject.name == "JumpButton" && hit && phase == "began")
    {
        hero.rigidbody2D.AddForce(new Vector2(0f, jumpForce));  //Add jump force to hero
        audio.Play ();
    }
}
}

任何帮助?

2 个答案:

答案 0 :(得分:2)

对于画布中的图形项目,您需要使用UnityRaycaster而不是使用UnityEngine.UI的Physics2D

答案 1 :(得分:1)

你不必再自己动手了。只需实现http://peterfinlan.com/infusion/界面,并确保在场景中有EventSystem和适当的raycaster。