最近做的小游戏,需要通过触屏来控制移动,主要做法就是在Update中检测Input.TouchCount,但是问题是会盖住UGUI的Button事件,第一时间想到射线检测

常用射线

Unity有射线类Ray和Physics.Raycast()Physics.Linecast()等,他提供强大的API,主要可以从某点发射射线,包括给射线长度和在哪一层检测(LayerMask)

通常的应用就是鼠标点击位置发射射线,对碰到的第一个物体做出反应(FPS游戏)

或者以角色为中心,向一个方向发射射线检测是否在边缘或者是否在地面上(比如向下发射一个很短的射线,如果碰到了地面则表示角色处于地面上而非落下或者跳起状态)

但是这种射线要求被检测物体必须有碰撞器(Collider)

UGUI的检测

所以当想要用射线对UGUI检测时,必须给UGUI绑定碰撞器

而除了加碰撞器外,还可以利用UGUI的EventSystem检测

EventSystem.current.IsPointerOverGameObject();//此方法返回bool值

(如果检测触摸Input.Touch,参数传入Input.GetTouch(0).fingerId)

此方法可以判断是否点击到了UI,但是被检测UI必须勾选RayCast Target

当然还有很多检测方法,比如重载Unity的一些接口如IPointerXXX系列

最新文章

  1. Vs2010在C#类文件头部添加文件注释的方法
  2. spring来了-04-AOP
  3. hadoop的kerberos认证
  4. 2015第29周六Spring
  5. Paho - MQTT C Cient的实现
  6. 手把手教你树莓派实现简易室内监控系统(A)
  7. webpack优化相关操作
  8. Python 中写一个装饰器实现限制频率访问
  9. Linux多线程编程,为什么要使用线程,使用线程的理由和优点等
  10. Unity 查找泛型List中的相同与不同数据
  11. Button中command后面函数添加参数解决方法
  12. 记一次MongoDB裸奔
  13. linux 之sed
  14. Java file方法的路径特性
  15. HDU3480_区间DP平行四边形优化
  16. SPOJ MKTHNUM & POJ 2104 - K-th Number - [主席树模板题]
  17. nohup 与 &
  18. nginx安装第三方模块
  19. nginx 上php不可写解决方法
  20. 【vue】父向子组件传参、子组件向父传参

热门文章

  1. Generator(生成器),入门初基,Coroutine(原生协程),登峰造极,Python3.10并发异步编程async底层实现
  2. MyBatis四大参数两种写法
  3. 【深入浅出Seata原理及实战】「入门基础专题」探索Seata服务的AT模式下的分布式开发实战指南(2)
  4. Java集合 - ConcurrentHashMap
  5. (11)go-micro微服务雪花算法
  6. 真正“搞”懂HTTP协议08之重定向
  7. 基于 VScode 搭建 Qt 运行环境
  8. Blazor入门100天 : 身份验证和授权 (2) - 角色/组件/特性/过程逻辑
  9. 普冉PY32系列(四) PY32F002/003/030的时钟设置
  10. ubuntu20.04安装systemback