UE5 射线检测排除隐藏的Actor
0x00
Unreal Engine 5(UE5)以其卓越的性能和直观的开发工具在游戏开发领域占据了重要地位。本系列将深入探讨UE5中射线检测的关键概念,着重介绍处理隐藏Actor的技巧。
0x01. 射线检测与隐藏Actor问题
在游戏中,射线检测是一项关键技术,用于实现玩家与虚拟环境的交互。然而,处理射线检测时排除隐藏的Actor是一个常见而需要小心处理的问题。在特定场景下,我们可能需要排除那些在屏幕上不可见、被隐藏的Actor,以确保交互的准确性。
0x02 正确排除隐藏的Actor的方法
在UE5中,一个常见的误解是使用ECC_Visibility
碰撞频道来尝试排除隐藏的Actor。然而,这种方法是不正确的,因为ECC_Visibility
主要关注物体是否可见,而不考虑它们是否被隐藏。
0x03 方法1:将Actor的Scale设置为0
在射线检测中,隐藏Actor的一种常见方法是将其Scale
属性设置为0。这种方法在大多数情况下是有效的,因为它使Actor在屏幕上变得不可见。然而,需要注意的是,这并不是一种完全严谨的方法。尽管在屏幕上看不到Actor(因为它的尺寸为0),但Actor仍然存在于虚拟世界中,而且可能仍然会与射线碰撞。
0x04 # 方法2:使用Ignore Actors
另一种排除隐藏Actor的方法是在进行射线检测时设置忽略的Actor。在UE的射线检测函数中,通常有一个参数可以传递忽略的Actor数组。将隐藏的Actor添加到这个数组中,射线就会忽略这些Actor,从而达到排除隐藏Actor的效果。
在隐藏Actor的时候,同时把actor添加到这个数组中即可。
0x05 # 方法3:修改Actor的碰撞属性
隐藏Actor的同时,将其碰撞属性设置为不可碰撞是另一种方法。通过将Actor的碰撞属性设置为不可碰撞,射线在进行碰撞检测时会忽略这些被隐藏的Actor。
0x06 # 为什么ECC_Visibility不能直接排除隐藏Actor
ECC_Visibility
主要关注物体的可见性,而不仅仅是它们是否显示在屏幕上。即使一个Actor被隐藏,它在可见性碰撞频道上依然存在碰撞体积,因此仍然会被射线检测所考虑。这就是为什么ECC_Visibility
不能直接用于排除隐藏Actor的原因。
0x07 总结
在射线检测中,正确排除隐藏的Actor是确保游戏交互准确性的关键步骤。每种方法都有其适用的场景,开发者可以根据项目的具体需求选择最合适的方法。在选择方法时,需要考虑方法的性能、准确性以及对项目整体架构的影响。通过深入理解每种方法的原理,开发者可以更好地处理射线检测中的隐藏Actor排除问题。
结尾
最后,关注公号“ITMan彪叔” 可以添加作者微信进行交流,及时收到更多有价值的文章。
UE5 射线检测排除隐藏的Actor的更多相关文章
- 【Unity3D】枪战游戏—发射子弹、射线检测
一.子弹的碰撞检测: 因为子弹的移动速度非常的快,那么如果为子弹添加一个collider,就有可能检测不到了. 因为collider是每一帧在执行,第一帧子弹可能在100米处,那么下一帧就在900米处 ...
- Unity3D 之射线检测
这里来记录下射线检测的相关内容: 射线检测故名就是通过射线去检测是否和碰撞器产生了交集,和碰撞器与碰撞器发生交集一样,会返回一个真. 射线的用法很多:比如检测是否跳跃,通过向地面投射射线控制在地面时候 ...
- Unity3D 5.0简单的射线检测实现跳跃功能
这里是一个简单的跳跃,5.0和其他版本貌似不一样,并且,再起跳功能做的不完全. 不过一个基本的思路在这里. 1.首先,射线检测,这里是利用一个空对象,放到主角对象的下面 2.然后调节射线的位置,在主角 ...
- UGUI射线检测
1.Graphic Raycaster 主要用于UI上的射线检测,挂有这个组件的物体,必须要挂上Canvas这个组件(当挂上Graphic Raycaster时Canvas也会自动挂上). Ignor ...
- Unity射线检测的用法总结
RayCast 射线检测 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- 心分享.心 ...
- U3D学习10——关节和射线检测
1.弹簧 2.铰链 3.固定关节 4.角色关节 5.自定义关节 6.raycast和raycasthit 射线有位移参数,可以设定只触发某一层的. 7.射线检测用于高速和精确 update是 ...
- Layabox 3D游戏开发学习笔记---射线检测,鼠标控制物体运动
核心要点:3D物体碰撞是靠射线检测,射线与碰撞器相撞获取对应的碰撞点信息. class RayPicking03 { private ray: Laya.Ray; private point: Lay ...
- 【转】 [UnityUI]UGUI射线检测
http://blog.csdn.net/lyh916/article/details/50947026 1.Graphic Raycaster 主要用于UI上的射线检测,挂有这个组件的物体,必须要挂 ...
- Unity - Raycast 射线检测
本文简要分析了Unity中射线检测的基本原理及用法,包括: Ray 射线 RaycastHit 光线投射碰撞信息 Raycast 光线投射 SphereCast 球体投射 OverlapSphere ...
- Unity的学习笔记(射线检测)
首先,射线检测的API是这样的,网上找了一下,这个图片看得很清楚: 接下来是自己使用这个进行测试 using System.Collections; using System.Collections. ...
随机推荐
- Java——成语接龙——递归算法——SpringJDBC+c3p0
这个例子,是我练习SpringJdbc+c3p0时所写.实现了输入一个成语,得到一颗不完整的接龙树.因为我数据库里有3W多个成语,在排除了接龙树成语重复的情况下,依然不能得到全部的结果,我感觉应该 ...
- acedCommand 之使用镜像命令
ads_name ent; ads_point pt2, pt3; if (acedSSGet(NULL, NULL, NULL, NULL, ent) != RTNORM) { return; } ...
- golang nsq 同一个topic有多个channel,同时项目又互相引用时出现的问题
p.p1 { margin: 0; font: 12px ".PingFang SC" } span.s1 { font: 12px "Helvetica Neue&qu ...
- Android 13 - Media框架(33)- ACodec(九)
关注公众号免费阅读全文,进入音视频开发技术分享群! 前一节我们学习了Output Format Changed事件是如何上抛并且被处理的,这一节我们紧接着来学习OutputBuffer是如何上抛并且被 ...
- css之伪元素选择器
注:本博客内容来自尚硅谷禹神的前端入门课程 什么是伪元素? 很像元素,但不是元素(element),是元素中的一些特殊位置. 伪元素语法中的::可以用:,因为css2中没有明确区分伪类和伪元素,但是s ...
- LLVM技术在GaussDB等数据库中的应用
本文分享自华为云社区<[GaussTech第3期]LLVM技术在GaussDB等数据库中的应用>,作者:GaussDB 数据库. Hi,别急! 让技术触达每一个角落,赋能更多的人,Gaus ...
- ansible list错误
[root@localhost ansible]# ansible all -list [WARNING]: * Failed to parse /etc/ansible/1.txt with ini ...
- vue-cli 单文件组件 工具安装
https://cli.vuejs.org/zh/ 在很多 Vue 项目中,我们使用 Vue.component 来定义全局组件,紧接着用 new Vue({ el: '#container '}) ...
- Android Media Framework(三)OpenMAX API阅读与分析
这篇文章我们将聚焦Control API的功能与用法,为实现OMX Core.Component打下坚实的基础. 1.OMX_Core.h OMX Core在OpenMAX IL架构中的位置位于IL ...
- Idea SpringBoot 子模块 加载不到该子模块根目录config下面的配置文件
Idea SpringBoot 子模块 加载不到该子模块根目录config下面的配置文件 import org.mybatis.spring.annotation.MapperScan; import ...