(持续更新)
关于屏幕触摸,有 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