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

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

什么是射线检测?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ue星空

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值