Unity 手机触摸Touch事件
1:判断是否触摸
如果大于0那就是最少一个手指触摸了屏幕 以此类推 如果=2就是2个手指 最多10个
if(Input.touchCount >0)
2:判断单个手指是否移动
if (Input.GetTouch(0).phase==TouchPhase.Moved)
3:手指的几种状态
// 手指刚触摸到屏幕的时候 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;
4:手机触摸移动的方向
if (Input.touchCount >0)
{
//第一个触摸到手指头 phase状态 Moved滑动
if (Input.GetTouch(0).phase == TouchPhase.Moved) {
if (touchPosion == Vector2.zero)
{
touchPosion = Input.GetTouch(0).position;
}
else {
Vector2 pos = Input.GetTouch(0).position;
float x = touchPosion.x - pos.x;
if (x < 0)
{
transform.Rotate(transform.up * -1 * 90 * Time.deltaTime);
}
if(x >0) {
transform.Rotate(transform.up * 1 * 90 * Time.deltaTime);
}
touchPosion = pos;
}
}
}5:手机触摸后松开移动的方向
//判断手指松开后移动方向
Vector2 TouchDirection()
{
Vector2 startFingerPos = new Vector2(0,0); //初始位置
int x = 0;
int y = 0;
if (Input.GetTouch(0).phase == TouchPhase.Began )
{
Debug.Log("======开始触摸=====");
startFingerPos = Input.GetTouch(0).position;
}
if (Input.GetTouch(0).phase == TouchPhase.Ended)
{
Debug.Log("======释放触摸=====");
//现在手指位置
Vector2 nowFingerPos = Input.GetTouch(0).position;
float xMoveDistance = Mathf.Abs(nowFingerPos.x - startFingerPos.x);
float yMoveDistance = Mathf.Abs(nowFingerPos.y - startFingerPos.y);
if (xMoveDistance > yMoveDistance)
{
if (nowFingerPos.x - startFingerPos.x > 0)
{
//Debug.Log("=======沿着X轴负方向移动=====");
x = -1; //沿着X轴负方向移动
}
else
{
//Debug.Log("=======沿着X轴正方向移动=====");
x = 1; //沿着X轴正方向移动
}
}
else
{
if (nowFingerPos.y - startFingerPos.y > 0)
{
//Debug.Log("=======沿着Y轴正方向移动=====");
y = 1; //沿着Y轴正方向移动
}
else
{
//Debug.Log("=======沿着Y轴负方向移动=====");
y = -1; //沿着Y轴负方向移动
}
}
return new Vector2(x, y);
}
return new Vector2(0, 0);
}