当前位置: 首页 > news >正文

虚幻引擎的射线检测/射线追踪

射线检测在 FPS/TPS 游戏中被广泛应用

什么是射线检测?

两个点行成一条线 , 射线检测是从一个起始点发出一条到终点的射线 , 如果射线命中一个游戏对象,就可以获取到对象命中时的 位置、距离、角度、是否命中、骨骼 等非常多的信息 , 这些信息在射击游戏中至关重要!

如果想要让射线检测的线条不显示 , 就把线条调试类型改成无

 除了Line 线条检测 , 还有其他很多种, 但是都差不多 , 这里不一一讲解了 , 大家可以自行尝试学习

我们现在来实现一下 鼠标单击后 检测前方物体 的功能

创建一个鼠标左键单击事件

获取相机世界位置作为 起始点 ,

再获取 相机位置 + (相机位置x向前向量1500cm) 作为 射线终点

 然后我们可以加个 判断 是否命中物体 并打印输出一下

这个break hit result 是个结构体 , 里面包含了命中物体非常多的信息

可以看到命中物体就会显示该物体的名字 , 没命中就会显示没命中物体

如果想变得更好玩一点 , 可以再加个destroy actor 节点 (销毁actor) , 只要射线命中物体 就会销毁这个物体

这样就简单实现了 开放世界生存游戏 的 拆家功能 , 哈哈!是不是瞬间成就感满满!!

再插一句 , 如果想要命中指定物体的话就在  编辑 - 项目设置 - 引擎 - 碰撞   中设置一个通道 , 默认响应 用忽略 , 这样其他物体都忽略 , 指定物体就会响应检测

然后配置具体物体碰撞规则 , 123响应改成阻挡 , 这样就会响应检测了

当然 , 游戏肯定不止这么简单 , 我也是个初学者 , 还在不断学习探索虚幻世界 , 这里只是用射线判断是否命中 , 用子弹碰撞重叠来判断应该更准确一点 , 要不然还没射中就销毁了 ! 后面如果技术进步了再完善这篇文章 !

如果大家想再变得更好玩一点 , 后面可以自己探索 , 还可以让物体拥有血量 , 然后判断一下 , 子弹击中扣血 , 血量 = 0 就销毁 , 各种细节大家自己研究哈!

注意: 射线检测尽量不用Even tick , 开销很大!

可以设置一个条件 , 比如玩家接近某个物体, 重叠时 , 才触发射线检测 , 设置定时器触发 , 减少开销!


http://www.mrgr.cn/news/35263.html

相关文章:

  • 水墨风度——书圣故里书画名家晋京展亮相荣宝斋大厦
  • 【machine learning-17-分类(逻辑回归sigmod)】
  • YOLOX预测图片是无法保存
  • Vue|插件
  • `#include <vector>`
  • Unity图形用户界面!*★,°*:.☆( ̄▽ ̄)/$:*.°★* 。(万字解析)
  • 【C++】检测TCP链接超时——时间轮组件设计
  • CF542E Playing on Graph 题解
  • 9/24作业
  • 【ROS2】spin、spinOnce、spin_some、spin_until_future_complete
  • 利用F.interpolate()函数进行插值操作
  • 一些做题中总结的零散的python函数的简单运用
  • 【工具类】——图片缩放
  • 828华为云征文|Flexus云服务器X实例:在Docker环境下搭建java开发环境
  • 拦截器filter
  • 如何使用ssm实现基于VUE.js的在线教育系统+vue
  • for循环的应用
  • 0基础学前端 day2
  • git基础 -- 查找文件内容
  • MyBatis的一二级缓存