一、Touch结构体介绍

1、Touch是一个结构体,每当发生一次触摸,系统生成一个Touch类型的变量,存储本次触摸的相关信息;如果发生多点触控,那么系统就会生成多个Touch类型的变量。

2、Touch结构体主要由以下成员变量:

①positon :触摸位置的坐标,是Vector2类型

②deltaPosition:触摸的位置变化量Vector2类型,当手指接触屏幕,向某一方向滑动时起始位置到终止位置的变化量

③deltaTime:触摸的时间变化量,是float类型

④phase:触摸所处阶段TouchPhase类型

⑤tapCount:单机数量,可以自动检测手指单机屏幕的次数

3、TouchPhase是枚举类型,主要包含以下5种类型状态:

①Began:手指开始接触屏幕

②Moved:手指接触屏幕并在屏幕上滑动

③Stationary:手指接触屏幕并保持不动

④Ended:手指离开屏幕

⑤Canceled:取消本次触摸的跟踪

4、Input类除了可以得到键盘与鼠标的输入值外,还可以得到手指触控

①Input.GetTouch(index:int):按序号获取触摸点(首个触摸点序号为0),返回Touch。

例如:Inpute.GetTouch(0).phase==TouchPhase.Moved

说明:Input.GetTouch(0)返回Touch结构体,Touch.phase返回TouchPhase枚举类型。

②Input.touchCount是静态整形变量,当一只手指接触到屏幕上时返回1,两个手指在屏幕上时返回2,以此类推。

③Input.touchs返回一个Touch类型数组,保存当前所有触摸点生成的Touch类型变量

二、手指触控的常见方式

1、手游的开发过程中一般都具备以下触控方式:

①手指(在屏幕上)上、下、左、右滑动方向的识别

②手指双击识别

③手指停留识别

④双指触控识别

2、实现一个上、下、左、右滑动示例:

/*****  Title: *         第23章_Unity游戏移植于手指触控识别**  Description:*        功能:*          1: 划屏触控识别。*              上、下、左、右。*          2:  识别手指双击*          3:  手指停留**  Date: 2019* *  Version: 1.0**  Modify Recorder:*     */
using UnityEngine;
using UnityEngine.UI;public class IdentityFinger : MonoBehaviour {/*  控件显示  */public Text _TxtLeftRightTips;                     //左右划屏测试 public Text _TxtUpDownTips;                        //上下划屏测试               public Text _TxtDoubleClickTips;                   //双击划屏测试                 public Text _TxtFingerStationaryTips;              //停留划屏测试          //手指滑屏private Vector2 _VecDeltaArea;                      //滑屏区域    //手指双击private bool _BoolSecondClick = false;              //是否为第二次点击private float _FloFirstTime = 0F;                   //第一次点击时间private float _FloSencondTime = 0F;                 //第二次点击时间//手指停留时间private float _FloStationaryTime = 0F;              //手指停留的时间void Start () {//测试数值_VecDeltaArea = Vector2.zero;}void Update (){/* 手指离开屏幕 */if (Input.touchCount == 1 && (Input.GetTouch(0).phase == TouchPhase.Ended)){_VecDeltaArea = Vector2.zero;_TxtDoubleClickTips.text = "";_FloStationaryTime = 0;_TxtFingerStationaryTips.text = "";}/* 识别手指滑屏 */if (Input.touchCount == 1 && (Input.GetTouch(0).phase == TouchPhase.Moved)){_VecDeltaArea.x += Input.GetTouch(0).deltaPosition.x;_VecDeltaArea.y += Input.GetTouch(0).deltaPosition.y;if (_VecDeltaArea.x > 100){_TxtLeftRightTips.text = "右滑屏";}else if (_VecDeltaArea.x < -100){_TxtLeftRightTips.text = "左滑屏";}if (_VecDeltaArea.y > 100){_TxtUpDownTips.text = "上滑屏";}else if (_VecDeltaArea.y < -100){_TxtUpDownTips.text = "下滑屏";}}/* 手指双击识别(老方法)*/if (Input.touchCount == 1 && (Input.GetTouch(0).phase == TouchPhase.Began)){if (_BoolSecondClick){_FloSencondTime = Time.time;if (_FloSencondTime - _FloFirstTime > 0.02F && _FloSencondTime - _FloFirstTime < 0.3F){_TxtDoubleClickTips.text = "发现双击!";}}_BoolSecondClick = true;_FloFirstTime = Time.time;}/*  手指双击测试(使用tapCount 属性)*/if (Input.GetTouch(0).tapCount == 2){_TxtDoubleClickTips.text = "发现双击!";}/* 手指停留识别 */if(Input.touchCount==1 && Input.GetTouch(0).phase==TouchPhase.Stationary){_FloStationaryTime += Input.GetTouch(0).deltaTime;if (_FloStationaryTime>1F){_TxtFingerStationaryTips.text = "发现停留";}}}
}//Class_end

3、效果如下:

注意:本内容来自《Unity3D/2D游戏开发从0到1第二版》 第23章内容

Unity手指触控之Touch结构体相关推荐

  1. 触摸旋转 Android,Opengl es Android 3D 手指触控旋转object

    明确原理: 先确定一下OpenGL里面的坐标为:x轴正方向为屏幕向右,y轴正方向为屏幕向上,z轴正方向为屏幕由里向外. 当手指在X轴方向上移动时,画面中物体应绕Y轴方向旋转,则为gl.glRotate ...

  2. Android系统辅助触控,Assistive Touch for Android

    Tags:安全助手 Android辅助触控定制版app(Assistive Touch for Android)是适用于Android设备的便捷工具,保护主页按钮和音量按钮,快速访问所有设置,加快速度 ...

  3. 手机触控事件touch

    1.touchstart 2.touchmove 3.touchend 注:可能存在多点触控,通过 touch=e.touches[0] 等,选择触控的某个点

  4. Unity VR 开发教程 OpenXR+XR Interaction Toolkit(八)手指触控 Poke Interaction

    文章目录

  5. unity 双指触控(以及多指触摸的代码原理分析)

    双指触摸规律:从第一根触摸的手指开始 ,会从0开始为其编号,假设中间抬起手指,假设现在有两根手指,抬起编号为0的手指的话,将会导致原本编号为1的手指编号变为0,而当再次按下一根新手指时,原本编号0的手 ...

  6. unity 多点触控

    //用于绑定参照物对象 var target : Transform; //缩放系数 var distance = 10.0; //左右滑动移动速度 var xSpeed = 250.0; var y ...

  7. 触控(Touch) 、 布局(Layout)

    1 使用触控实现一个简易的画板 1.1 问题 触控(Touch)是一个UITouch类型的对象,当用户触摸了屏幕上的视图时自动被创建,通常使用触控实现绘图.涂鸦.手写等功能.本案例使用触控实现一个简易 ...

  8. Unity 手机触屏事件

    Unity 触屏操作   当将Unity游戏运行到IOS或Android设备上时,桌面系统的鼠标左键可以自动变为手机屏幕上的触屏操作,但如多点触屏等操作却是无法利用鼠标操作进行的.Unity的Inpu ...

  9. unity手指触摸事件

    Unity 触屏操作 当将Unity游戏运行到IOS或Android设备上时,桌面系统的鼠标左键可以自动变为手机屏幕上的触屏操作,但如多点触屏等操作却是无法利用鼠标操作进行的.Unity的Input类 ...

最新文章

  1. php从mysql资源类型_php从mysql里读出来的数据默认什么类型?
  2. ckeditor的使用实例
  3. 使用ReflectionToStringBuilder实现toString方法
  4. Javascript条件运算符、其他运算符第五课(小二节)
  5. windows上怎么用libnfc的库函数编程
  6. 十九、Oracle学习笔记:行变量
  7. 虚幻4 手持式AR应用 模板认识
  8. NVIDIA Tegra3,高通S4 MSM8960,三星Exynos4【新一代手机处理器大比拼】
  9. runge phenomenon(龙格现象)和过拟合
  10. csdner: china_jeffery, C++默认构造函数; csdner: thief thief, 什么情况下C++编译器会生成默认的构造函数
  11. 机器视觉怎么和plc通讯
  12. 【计算机毕业设计】课堂考勤微信小程序 基于微信小程序的课堂考勤管理系统
  13. 网页版手游怎么选服务器,吃鸡怎么看自己选的哪个服务器 | 手游网游页游攻略大全...
  14. 第一篇:瑞吉外卖项目概述
  15. Ubuntu下面steam的安装
  16. 如何通过组策略统一为公司电脑设置“兼容性视图设置”
  17. Dir-645任意文件读取漏洞
  18. 软考是什么?考哪个科目容易过?
  19. 纯文本抽出程序库DMC TEXT FILTER
  20. 谷歌学术简明使用说明

热门文章

  1. ZYNQ开发系列——PS响应PL中断请求
  2. 嵌入式系统(Embedded System)概述及其应用
  3. 网上赚钱第一步是借鉴与学习
  4. Linux安装小企鹅输入法
  5. 微信公众平台开发之微商城
  6. 基于python的视频监控系统_Python远程视频监控程序
  7. 《哲学史讲演录》——思辨节选---塞诺芬尼 、巴门尼德
  8. 沟通“黄金圈”,揭秘有效沟通最佳思维方式
  9. 北航计算机专业录取线,北航各专业录取分数线
  10. 一、Python-劳务报酬计算器(新手练习)