惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
V
Visual Studio Blog
IT之家
IT之家
博客园 - 聂微东
The Cloudflare Blog
月光博客
月光博客
阮一峰的网络日志
阮一峰的网络日志
S
SegmentFault 最新的问题
Apple Machine Learning Research
Apple Machine Learning Research
酷 壳 – CoolShell
酷 壳 – CoolShell
爱范儿
爱范儿
H
Help Net Security
博客园 - 叶小钗
V
V2EX
WordPress大学
WordPress大学
J
Java Code Geeks
Hugging Face - Blog
Hugging Face - Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园_首页
C
Check Point Blog
B
Blog
D
DataBreaches.Net
美团技术团队
罗磊的独立博客

博客园 - ITman彪叔

赋能UE运行态编辑平台: 网络图片下载的插件改造与复盘 召回率暴涨!“层级化分片”与“降噪”拯救 RAG 系统 基于FastMCP打通业务系统与AI:构建智能协作新范式 在 Dify 中通过 MCP 集成本地 FastMCP 服务避坑指南 从分形到森林——使用 Three.js 创建逼真的 3D 树木 Threejs 视频融合 UE5 小部件 组合框(键)ComboBox (Key) Tesseract OCR 页面分割模式解析 Java MQTT 主流开发方案对比 Java Modbus主流开发方案对比 Java OPC UA 开发方案全对比:开源、商业、集成与官方标准 Nodejs打包 Webpack 中 __dirname 的正确配置与行为解析 强制 pnpm 使用 IPv4 而不是 IPv6 的终极解决方案指南 uniapp 微信小程序 调试 UE Websocket 通信 UE Geometry_Script 程序化建模 UE MultiLineTraceByChannel函数返回只有一个对象的问题 UE Spline 样条网格体组件添加碰撞 Three光源Target位置改变光照方向不变的问题及解决方法 UE5打包SDK未正确安装的问题 判断两个矩形是否相交(Rect Intersection) 电力布局三维编辑器功能设计 UE4 WebUI使用指南2-通信
UE5 射线检测排除隐藏的Actor
ITman彪叔 · 2023-12-14 · via 博客园 - ITman彪叔

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彪叔” 可以添加作者微信进行交流,及时收到更多有价值的文章。