热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Unity2Dtouch笔记

Touch先上官方属性表:altitudeAngleazimuthAngle压力等级Type暂时没用上所以没做试验用的设备是ipadpro9.7altitude


Touch

先上官方属性表:altitudeAngle/azimuthAngle/压力等级/Type暂时没用上所以没做试验

用的设备是ipad pro 9.7


altitudeAngleValue of 0 radians indicates that the stylus is parallel to the surface, pi/2 indicates that it is perpendicular.
azimuthAngleValue of 0 radians indicates that the stylus is pointed along the x-axis of the device.
deltaPositionThe position delta since last change in pixel coordinates.
deltaTimeAmount of time that has passed since the last recorded change in Touch values.
fingerIdThe unique index for the touch.
maximumPossiblePressureThe maximum possible pressure value for a platform. If Input.touchPressureSupported returns false, the value of this property will always be 1.0f.
phaseDescribes the phase of the touch.
positionThe position of the touch in screen space pixel coordinates.
pressureThe current amount of pressure being applied to a touch. 1.0f is considered to be the pressure of an average touch. If Input.touchPressureSupported returns false, the value of this property will always be 1.0f.
radiusAn estimated value of the radius of a touch. Add radiusVariance to get the maximum touch size, subtract it to get the minimum touch size.
radiusVarianceThis value determines the accuracy of the touch radius. Add this value to the radius to get the maximum touch size, subtract it to get the minimum touch size.
rawPositionThe first position of the touch contact in screen space pixel coordinates.
tapCountNumber of taps.
typeA value that indicates whether a touch was of Direct, Indirect (or remote), or Stylus type.

1.deltaPosition 

        手指静止时清零(按一定频率更新,值代表前一个点和后一个点位置差)

        移动中(即phase是move时)产生非零值

2.deltaTime    自记录的 Touch 值上次更改以来经过的时间

        个位的单位是s,整个是个float

        touch内任意属性值发生变化均会刷新该数据

3.fingerId    触摸的唯一索引。

      (交互连打可能出现误判——同一个fingerid因为递补记录了两个不同地方的点),手指不离开屏幕的话fingerid和手指对应关系不变,在某些帧上,存在的fingerId可能不连续(例如0,1,4),具体和input.getTouch的index的关系在下面gettouch部分说明

        想跟踪触摸事件的话推荐使用fingerId,用getTouch(index)的话在多指同时操作时候会跟丢

4.phase    描述触摸阶段。

        ended

        任何时刻的手指抬起(包括连点中的每一下抬起)

        moved

        手指拖动,或者交互点击不同位置(连点判定间隔时间内)

         stationary

        手指放在板子上完全静止不动(手指角度变化/手指压力变化也可能会导致从这个状态跳到别的状态)

        began

        手指每次触摸屏幕

        canceled

        (暂时没试出来是怎么触发这个状态)

        一般的一个phase周期是从began——moved/stationary循环——ended

        快速连点则是上面的一个循环*n

5.position    触摸在屏幕空间中的位置(像素坐标)。

        设备左下角(0,0),右上角为板子分辨率的最大值,如果要和GameObject的position做运算需要切换一下坐标类型(世界——像素)

6.radius    触摸半径的估计值。加上 radiusVariance 可获得最大触摸大小,减去它可获得最小触摸大小。

        随放在板子上的接触面积变化,体测指尖大概是20.0,增加指肚接触面积大约能到200
radiusVariance是个固定值,测试机上大概是5.0xxxx

7.rawPosition    触摸触点在屏幕空间中的第一个位置(像素坐标)。

        这个属性貌似有问题,测试时坐标变成了设备左上角为zero,右下角为1024x768

        而且这个属性在手指在屏幕上连续拖动时候是会变化的

         官方描述,反正试出来的2021.2.7f1c1上没有一条能对得上描述的(

8.tapCount    点击次数。

        在大约间隔0.5s左右(可能有设置的地方,没找到)时间间隔内产生同范围(A)连续点击则累加(可以换不同手指,坐标范围ok就可以),松手或hold超过0.5s间隔则清零,抬手间隔内有范围(A)外点击时,该次点击(指同fingerId)的phase会有瞬间变成phase.move且tapcount变1,但如果在间隔时间内重新点回最开始的范围(A)则tapcount变为抬手前累计的次数+1

        不抬手的话该值不再变化,每次出现phase.began时叠加


Input中和touch相关的:

1.touchcount
    当前放在板子上的手指数量

2.touches
    返回含有touchcount个Touch对象的数组,即当前所有触摸事件

3.gettouch(int index)

         index一定是从0到touchcount,如果多指状况下抬起任意手指,则该index对应的fingerid移除,后面的fingerid向前平移(发生index

        手指顺序触摸时,index顺序递增,fingerid从0开始查询,遇到空缺就标记新触摸为该空缺的fingerid,所有后面index对应的fingerid对应后移

        简易例子如下:

按顺序放右手的食指中指无名指小指后:


gettouch(index)index=0index=1index=2index=3
对应手指食指   中指无名指小指
fingerid0      123

这时松开中指:


gettouch(index)index=0index=1index=2-
对应手指食指   无名指小指-
fingerid0      23-

再松开食指:


gettouch(index)index=0index=1--
对应手指无名指小指--
fingerid23--

 任意地方放回一根指头(左手食指):


gettouch(index)index=0index=1index=2-
对应手指左手食指   无名指小指-
fingerid0      23-

任意地方再放回一根手指头(右手拇指):


gettouch(index)index=0index=1index=2index=3
对应手指左手食指   拇指无名指小指
fingerid0      123

推荐阅读
  • 本文详细介绍了一种利用 ESP8266 01S 模块构建 Web 服务器的成功实践方案。通过具体的代码示例和详细的步骤说明,帮助读者快速掌握该模块的使用方法。在疫情期间,作者重新审视并研究了这一未被充分利用的模块,最终成功实现了 Web 服务器的功能。本文不仅提供了完整的代码实现,还涵盖了调试过程中遇到的常见问题及其解决方法,为初学者提供了宝贵的参考。 ... [详细]
  • 目录预备知识导包构建数据集神经网络结构训练测试精度可视化计算模型精度损失可视化输出网络结构信息训练神经网络定义参数载入数据载入神经网络结构、损失及优化训练及测试损失、精度可视化qu ... [详细]
  • 包含phppdoerrorcode的词条 ... [详细]
  • JUC(三):深入解析AQS
    本文详细介绍了Java并发工具包中的核心类AQS(AbstractQueuedSynchronizer),包括其基本概念、数据结构、源码分析及核心方法的实现。 ... [详细]
  • IOS Run loop详解
    为什么80%的码农都做不了架构师?转自http:blog.csdn.netztp800201articledetails9240913感谢作者分享Objecti ... [详细]
  • 本文介绍了如何利用Shell脚本高效地部署MHA(MySQL High Availability)高可用集群。通过详细的脚本编写和配置示例,展示了自动化部署过程中的关键步骤和注意事项。该方法不仅简化了集群的部署流程,还提高了系统的稳定性和可用性。 ... [详细]
  • 本文介绍了如何利用ObjectMapper实现JSON与JavaBean之间的高效转换。ObjectMapper是Jackson库的核心组件,能够便捷地将Java对象序列化为JSON格式,并支持从JSON、XML以及文件等多种数据源反序列化为Java对象。此外,还探讨了在实际应用中如何优化转换性能,以提升系统整体效率。 ... [详细]
  • 本指南从零开始介绍Scala编程语言的基础知识,重点讲解了Scala解释器REPL(读取-求值-打印-循环)的使用方法。REPL是Scala开发中的重要工具,能够帮助初学者快速理解和实践Scala的基本语法和特性。通过详细的示例和练习,读者将能够熟练掌握Scala的基础概念和编程技巧。 ... [详细]
  • 本文探讨了如何利用 jQuery 的 JSONP 技术实现跨域调用外部 Web 服务。通过详细解析 JSONP 的工作原理及其在 jQuery 中的应用,本文提供了实用的代码示例和最佳实践,帮助开发者解决跨域请求中的常见问题。 ... [详细]
  • 手指触控|Android电容屏幕驱动调试指南
    手指触控|Android电容屏幕驱动调试指南 ... [详细]
  • 兆芯X86 CPU架构的演进与现状(国产CPU系列)
    本文详细介绍了兆芯X86 CPU架构的发展历程,从公司成立背景到关键技术授权,再到具体芯片架构的演进,全面解析了兆芯在国产CPU领域的贡献与挑战。 ... [详细]
  • 检查 Kubernetes 系统命名空间中的 Pod 状态时,发现 Metric Server Pod 虽然处于运行状态,但存在异常:日志显示 'it doesn’t contain any IP SANs'。 ... [详细]
  • 本文详细介绍了Java反射机制的基本概念、获取Class对象的方法、反射的主要功能及其在实际开发中的应用。通过具体示例,帮助读者更好地理解和使用Java反射。 ... [详细]
  • Spring – Bean Life Cycle
    Spring – Bean Life Cycle ... [详细]
  • 本文介绍如何使用 Python 的 DOM 和 SAX 方法解析 XML 文件,并通过示例展示了如何动态创建数据库表和处理大量数据的实时插入。 ... [详细]
author-avatar
X婷婷Z
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有