检测触摸

要检测 Unity 中的触摸,我们只需要使用 Input.GetTouch() 并将其传递给索引即可。

using UnityEngine;
using System.Collections;

public class TouchExample : MonoBehaviour { 
    void Update() {
        if (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Began)
        {
            //Do Stuff
        }
    }
}

要么

using UnityEngine;
using System.Collections;

public class TouchExample : MonoBehaviour { 
    void Update() {
        for(int i = 0; i < Input.touchCount; i++)
        {
            if (Input.GetTouch(i).phase == TouchPhase.Began)
            {
                //Do Stuff
            }
        }    
    }
}

这些例子触及了最后一个游戏框架。

TouchPhase

在 TouchPhase 枚举中,有 5 种不同类型的 TouchPhase

  • 开始 - 手指触摸屏幕
  • 移动 - 手指在屏幕上移动
  • 静止 - 手指在屏幕上但没有移动
  • 结束 - 手指从屏幕上抬起
  • 已取消 - 系统取消了触摸跟踪

例如,为了移动对象,该脚本基于触摸被附加到屏幕上。

public class TouchMoveExample : MonoBehaviour 
{
    public float speed = 0.1f;

    void Update () {
        if(Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Moved)
        {
            Vector2 touchDeltaPosition = Input.GetTouch(0).deltaPosition;
            transform.Translate(-touchDeltaPosition.x * speed, -touchDeltaPosition.y * speed, 0);
        }
    }
}