版权声明:欢迎转载,转载请注明出处 https://blog.csdn.net/weixin_38239050/article/details/82351558
using UnityEngine;
public class AndroidTouch : MonoBehaviour
{
private void Update()
{
#region 手指按下、手指移动、手指松开
//手指按下
if (Input.touchCount == 1)
{
if (Input.touches[0].phase == TouchPhase.Began)
{
// 手指按下时,要触发的代码
}
}
//手指在屏幕上滑动
if (Input.touchCount == 1)
{
if (Input.touches[0].phase == TouchPhase.Moved)
{
// 手指滑动时,要触发的代码
float s01 = Input.GetAxis("Mouse X"); //手指水平移动的距离
float s02 = Input.GetAxis("Mouse Y"); //手指垂直移动的距离
}
}
//手指在屏幕上松开时 下面两个判断只能写一个,否则按下后会不停执行其中内容
if (Input.touches[0].phase == TouchPhase.Ended || Input.touches[0].phase != TouchPhase.Canceled)
{
}
#endregion
#region 多手指触发事件
if (Input.touchCount == 2) //代表有两个手指
{
// 第一个手指 第二个手指
if (Input.GetTouch(0).phase == TouchPhase.Moved && Input.GetTouch(1).phase == TouchPhase.Moved)
{
Vector3 s1 = Input.GetTouch(0).position; //第一个手指屏幕坐标
Vector3 s2 = Input.GetTouch(1).position; //第二个手指屏幕坐标
float olddis = 0;
float newdis = Vector2.Distance(s1, s2);
if (newdis > olddis) //手势外拉
{
}
if (newdis < olddis) //手勢內拉
{
}
olddis = newdis;
}
}
#endregion
}
//总结:
//1.不管是触屏事件还是PC端的事件,世界转屏幕还是屏幕转世界以及射线检测都是管用的
//2.安卓端的手指坐标(Input.touches[0].position)等同于PC端的鼠标屏幕坐标(Input.mousePosition)
}
// 手指刚触摸到屏幕的时候
Input.GetTouch(0).phase == TouchPhase.Began;
// 手指在屏幕上移动
Input.GetTouch(0).phase == TouchPhase.Moved;
// 手指触摸屏幕,但并未移动
Input.GetTouch(0).phase == TouchPhase.Stationary;
// 手指从屏幕上移开,这是一个触控的最后状态
Input.GetTouch(0).phase == TouchPhase.Ended;
// 系统取消追踪触控。这常发生在用户把屏幕放到脸上或者同时触控超过了5根手指,同样也是触控的最后一个状态
Input.GetTouch(0).phase == TouchPhase.Canceled;