[Unity]射线的简单应用和对UGUI的检测
最近做的小游戏,需要通过触屏来控制移动,主要做法就是在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系列
[Unity]射线的简单应用和对UGUI的检测的更多相关文章
- unity射线碰撞检测+LayerMask的使用
射线在unity中是个很方便的东西,对对象查找.多用于碰撞检测(如:子弹飞行是否击中目标).角色移动等提供了很大的帮助,在此做个总结与大家分享下 ,若有不足欢迎吐槽 好了,话补多说啦,直接进入主题: ...
- Unity——射线系统
Unity射线系统 Demo展示 UI+Physical射线测试: FPS自定义射线测试: UGUI射线工具 实现功能,鼠标点击UI,返回鼠标点击的UI对象: 需要使用到鼠标点击事件-PointerE ...
- Unity——射线检测(鼠标点击开关门效果)
Unity射线检测--实现简单的开关门效果 简要:通过鼠标点击来发射一条射线,来获得射线所碰到的物体名称,再通过改变门的Rotation值来实现开关门的效果. 一.代码实现 1.1 简易的场景搭建 注 ...
- 【Unity】基于MVC模式的背包系统 UGUI实现
前言 本文基于MVC模式,用UGUI初步实现了背包系统. Control层包括了点击和拖拽两种逻辑. 博文首发:http://blog.csdn.net/duzixi 下载地址:https://git ...
- unity 编辑器扩展简单入门
unity 编辑器扩展简单入门 通过使用编辑器扩展,我们可以对一些机械的操作实现自动化,而不用使用额外的环境,将工具与开发环境融为一体:并且,编辑器扩展也提供GUI库,来实现可视化操作:编辑器扩展甚至 ...
- 3D空间中射线与轴向包围盒AABB的交叉检测算法【转】
引言 在上一节中,我讲述了如何实现射线与三角形的交叉检测算法.但是,我们应该知道,在游戏开发中,一个模型有很多的三角形构成,如果要对所有的物体,所有的三角形进行这种检测,就算现在的计算机运算能力,也是 ...
- 3D空间中射线与轴向包围盒AABB的交叉检测算法 【转】
http://blog.csdn.net/i_dovelemon/article/details/38342739 引言 在上一节中,我讲述了如何实现射线与三角形的交叉检测算法. 但是,我们应该知道, ...
- 【Unity游戏开发】你真的了解UGUI中的IPointerClickHandler吗?
一.引子 马三在最近的开发工作中遇到了一个比较有意思的bug:“TableViewCell上面的某些自定义UI组件不能响应点击事件,并且它的父容器TableView也不能响应点击事件,但是TableV ...
- Unity射线检测的用法总结
RayCast 射线检测 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- 心分享.心 ...
- Unity 3D 一个简单的角色控制脚本
之所以写这个脚本,是因为我想起了我还是新手的时候,那时为了一个角色控制脚本百度了半天还是一无所获,因为看不懂啊,都写的太高级了 希望这个脚本能够帮助那些 像曾经的我一样迷失于代码中的新手们能够清晰的理 ...
随机推荐
- [编程基础] Python数据生成库Faker总结
Python Faker教程展示了如何使用Faker软件包在Python中生成伪数据.我们使用joke2k/faker包. 1 介绍 Faker是一个生成假数据的Python库.伪数据通常用于测试或用 ...
- 时钟同步服务器ntp安装文档
应用场景 同步时钟很有必要,如果服务器的时间差过大会出现不必要的问题 大数据产生与处理系统是各种计算设备集群的,计算设备将统一.同步的标准时间用于记录各种事件发生时序, 如E-MAIL信息.文件创建和 ...
- 学习.NET MAUI Blazor(五)、修改Window窗口标题
由于Blazor属于SPA(single-page application),所以页面标题需要使用PageTitle组件来实现.但是在MAUI Blazor中,Blazor所在的位置是WebView, ...
- ResourceQuota与LimitRange区别
ResourceQuota与LimitRange区别 ResourceQuota ResourceQuota 用来限制 namespace 中所有的 Pod 占用的总的资源 request 和 lim ...
- 2.PyQt5【窗口组件】对话框-Dialog
一.前言 QDialog 类是对话框窗口的基类.对话框窗口是主要用于短期任务以及和用户进行简要 通讯的顶级窗口.QDialog 可以是模态对话框也可以是非模态对话框.QDialog 支持扩展性并 且可 ...
- Solon Java Framework v1.12.2 发布
一个更现代感的 Java 应用开发框架:更快.更小.更自由.没有 Spring,没有 Servlet,没有 JavaEE:独立的轻量生态.主框架仅 0.1 MB. @Controller public ...
- Ubuntu desktop 文件的书写格式
首先切换到存放 desktop 文件的目录下,编辑好就可以保存了 cd /usr/share/applications/ vim name.desktop [Desktop Entry] Name=显 ...
- 洛谷 P1094纪念品分组 题解
一道典型的贪心算法题. 题目内容不多说了,大致说一下代码的思路: 给定的所有纪念品中可以先用sort排一下顺序,然后从价格最高和最低的开始向中间靠拢(可以看做是指针),这样保证每组的搭配都是最优的. ...
- 网络编程前戏和OSI七层协议
目录 一.软件开发架构 1.什么是软件开发架构 2.软件开发架构 架构方式一:c/s架构 架构方式二:b/s架构 架构优劣势 二.架构总结 三.网络编程前戏 1.什么是网络编程 2.学习网络编程的目的 ...
- C#DataTableRow列值互转
1 /// <summary> 2 /// 把DataRow中的某一列值转换为CheckState类型 3 /// </summary> 4 /// <param nam ...