用户输入 Touch

(持续更新)

关于屏幕触摸,有 Touch、TouchPhase、TouchType、

最好是用 Unity Remote 来测试

注意

Input.mousePosition 是 Vector3类型,左下角 (0,0,0),右上角(width,height,0)
Input.GetTouch(0).position 是 Vector2类型,左下角(0,0),右上角(width,height)


测试表明,下边这些函数除了鼠标可用,触摸屏也可用,如果是触摸屏,那么总是以最后一根手指为准
Input.GetMouseButtonDown(0)
Input.GetMouseButton(0)
Input.GetMouseButtonUp(0)

Input.GetMouseButtonXXX(1) ,则需要鼠标右键,或者第二根手指触摸

Input.GetButtonXXX(“Fire1“) 也支持鼠标、触摸屏,效果类似 GetMouseButtonXXX


Input 和 Touch 都是全局的,思考实现双摇杆需要考虑的问题。。。。。。

可以用各自的 OnMouseXXX 回调函数,这样就不会冲突;


Input类中关于触摸的相关内容

静态属性

touchCount —— 触摸的次数,保证在这一帧内不会改变(只读)

touches —— 返回表示上一帧 (last frame) 期间所有触摸状态的对象列表。(只读)(分配临时变量)。(Touch[ ])

multiTouchEnabled —— 系统是否支持 multiple touches

simulateMouseWithTouches —— 启用/禁用 以触摸模拟鼠标,默认开启(如果启用,最多三个并发的触摸将转换为相应鼠标按钮上的状态(例如:两个手指的点击将等于鼠标右键单击))

stylusTouchSupported —— 当设备或平台支持Stylus Touch时,返回true(应该是指手写笔)

touchPressureSupported —— 是否支持触摸压力

touchSupported —— 返回应用程序当前运行的设备是否支持触摸输入

静态方法

GetTouch(i) —— 返回表示特定触摸状态的对象。(不分配临时变量)。(返回 Touch 类型)


TouchPhase

状态描述
Began手指开始触摸屏幕
Moved手指在屏幕上移动
Stationary手指触摸屏幕但是没有移动
Ended手指从屏幕上抬起。这是触摸的最后阶段。
Canceled系统取消了对触摸的跟踪 ——(测试时没有输出此项)

Touch 结构体(值类型)

描述手指触摸屏幕的状态的结构体。

设备可以跟踪与触摸屏上的触摸有关的许多不同的数据,包括
它的相位(即,它是刚刚开始、结束还是移动)、
它的位置
以及该触摸是一个单一的接触还是几个点击。
此外,设备可以检测到帧更新之间的触摸的连续性,因此可以跨帧报告一致的ID号,并用于确定特定手指的移动方式。

只有一些属性,如下

fingerId —— 触摸数据的唯一索引id

position —— 触摸的位置

deltaPosition —— 触摸位置的改变量

deltaTime —— 距离上次触摸数据变化的时间间隔

tapCount —— 单击计数

phase —— 触摸的状态描述


altitudeAngle

amimuthAngle

maximumPossiblePressure

pressure

radius

radiusVariance

rawPosition —— 用于触摸的原始位置(Vector2),为啥一直得到结果是(0.0,0.0)

type —— TouchType 枚举


TouchType 枚举(用于 touch.type)

描述一个触摸是 直接的、间接的(远程的)、或是来自触笔

Direct
Indirect
Stylus


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值