无法在Unity3D中使用多点触控功能

时间:2016-03-20 20:13:15

标签: android unity3d touch multi-touch

在搜索解决方案后,我仍然无法弄清楚为什么我的多点触控脚本无法正常工作。这是我的代码。在您提出之前:所有变量都存在。

    void Update()
{
    if (Input.touchCount > 0)
    {
        for (i = 0; i < Input.touchCount; i++)
        {
            if (Input.GetTouch(i).phase != TouchPhase.Ended)
            {
                hit = Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Input.GetTouch(0).position), Vector2.zero);
                if (hit.collider != null && hit.transform.gameObject.tag == "Links")
                {
                    cannon.GetComponent<Rigidbody2D>().MovePosition(cannon.GetComponent<Rigidbody2D>().position + new Vector2(-0.1f, 0) * Time.deltaTime * moveSpeed);
                }
                else if (hit.collider != null && hit.transform.gameObject.tag == "Rechts")
                {
                    cannon.GetComponent<Rigidbody2D>().MovePosition(cannon.GetComponent<Rigidbody2D>().position + new Vector2(0.1f, 0) * Time.deltaTime * moveSpeed);
                }
            }



            if (Input.GetTouch(i).phase == TouchPhase.Began)
            {
                hit = Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Input.GetTouch(0).position), Vector2.zero);
                if (hit.collider != null && hit.transform.gameObject.tag == "Fire")
                {
                    clone = Instantiate(projectile, cannon.transform.position + new Vector3(0, 1.3f, 0), transform.rotation) as Rigidbody2D;
                    clone.velocity = new Vector2(0, speed);
                }
            }
        }
    }
}

它一次只能注册一个输入。是的,我的手机确实支持多点触控。我会感激任何帮助。

1 个答案:

答案 0 :(得分:1)

你的问题非常简单!

你有一个&#34; 0&#34;你应该有一个&#34;我&#34;。这就是全部。

你正在和我一起循环......

    for (i = 0; i < Input.touchCount; i++)

有时你正确地引用了

     GetTouch(i)

但在其他时候你错误地引用了

    GetTouch(0)
幸运的是,这就是全部!

不要忘记您将来可以通过日志记录轻松解决此类问题(使用Debug.Log,或者在屏幕上显示Text并在那里写下您的开发信息,{{ 1}})