Unity手指触控之Touch结构体
一、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结构体相关推荐
- 触摸旋转 Android,Opengl es Android 3D 手指触控旋转object
明确原理: 先确定一下OpenGL里面的坐标为:x轴正方向为屏幕向右,y轴正方向为屏幕向上,z轴正方向为屏幕由里向外. 当手指在X轴方向上移动时,画面中物体应绕Y轴方向旋转,则为gl.glRotate ...
- Android系统辅助触控,Assistive Touch for Android
Tags:安全助手 Android辅助触控定制版app(Assistive Touch for Android)是适用于Android设备的便捷工具,保护主页按钮和音量按钮,快速访问所有设置,加快速度 ...
- 手机触控事件touch
1.touchstart 2.touchmove 3.touchend 注:可能存在多点触控,通过 touch=e.touches[0] 等,选择触控的某个点
- Unity VR 开发教程 OpenXR+XR Interaction Toolkit(八)手指触控 Poke Interaction
文章目录
- unity 双指触控(以及多指触摸的代码原理分析)
双指触摸规律:从第一根触摸的手指开始 ,会从0开始为其编号,假设中间抬起手指,假设现在有两根手指,抬起编号为0的手指的话,将会导致原本编号为1的手指编号变为0,而当再次按下一根新手指时,原本编号0的手 ...
- unity 多点触控
//用于绑定参照物对象 var target : Transform; //缩放系数 var distance = 10.0; //左右滑动移动速度 var xSpeed = 250.0; var y ...
- 触控(Touch) 、 布局(Layout)
1 使用触控实现一个简易的画板 1.1 问题 触控(Touch)是一个UITouch类型的对象,当用户触摸了屏幕上的视图时自动被创建,通常使用触控实现绘图.涂鸦.手写等功能.本案例使用触控实现一个简易 ...
- Unity 手机触屏事件
Unity 触屏操作 当将Unity游戏运行到IOS或Android设备上时,桌面系统的鼠标左键可以自动变为手机屏幕上的触屏操作,但如多点触屏等操作却是无法利用鼠标操作进行的.Unity的Inpu ...
- unity手指触摸事件
Unity 触屏操作 当将Unity游戏运行到IOS或Android设备上时,桌面系统的鼠标左键可以自动变为手机屏幕上的触屏操作,但如多点触屏等操作却是无法利用鼠标操作进行的.Unity的Input类 ...
最新文章
- php从mysql资源类型_php从mysql里读出来的数据默认什么类型?
- ckeditor的使用实例
- 使用ReflectionToStringBuilder实现toString方法
- Javascript条件运算符、其他运算符第五课(小二节)
- windows上怎么用libnfc的库函数编程
- 十九、Oracle学习笔记:行变量
- 虚幻4 手持式AR应用 模板认识
- NVIDIA Tegra3,高通S4 MSM8960,三星Exynos4【新一代手机处理器大比拼】
- runge phenomenon(龙格现象)和过拟合
- csdner: china_jeffery, C++默认构造函数; csdner: thief thief, 什么情况下C++编译器会生成默认的构造函数
- 机器视觉怎么和plc通讯
- 【计算机毕业设计】课堂考勤微信小程序 基于微信小程序的课堂考勤管理系统
- 网页版手游怎么选服务器,吃鸡怎么看自己选的哪个服务器 | 手游网游页游攻略大全...
- 第一篇:瑞吉外卖项目概述
- Ubuntu下面steam的安装
- 如何通过组策略统一为公司电脑设置“兼容性视图设置”
- Dir-645任意文件读取漏洞
- 软考是什么?考哪个科目容易过?
- 纯文本抽出程序库DMC TEXT FILTER
- 谷歌学术简明使用说明