UE4复习4_射线检测

Posted reluctante1

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UE4复习4_射线检测相关的知识,希望对你有一定的参考价值。

假如游戏中有一个需要我们进行交互的物体,可以通过射线检测来判断角色与改物体是否满足条件(比如面向它且在一定距离之内)

首先创建了一个雕像,并且添加了两个粒子系统,smoke和fire,还有一个旋转的text。

当我们靠近该雕像且正视它时,按鼠标左键会使得smoke,fire,text被激活。

雕像的蓝图:

技术图片

 技术图片

 技术图片 技术图片

 

 雕像的蓝图如上,游戏开始时smoke,fire,text都是不可见的。

写了一个函数active all,如果传入值是true,那么会将三者的值改为可见,且将控制text 是否旋转的text rotate布尔值也修改为true。

 

然后就是射线检测了,思路是首先需要在角色身上创建一个插槽作为射线的起始点,然后在将control rotation的作为视角方向。

这样发出的射线起始点为插槽,终点为 control rotation的vector * 长度 +插槽起始点。步骤如下:

在角色的骨骼里找到head,并且创建一个插槽,命名为socket_head;(如图,可以通过控制柄来自定义插槽的位置,不一定非在头上)

技术图片

 

 

在角色蓝图中右键trace,会发现许多射线检测的函数,这里使用的是 line trace by channel;

通过上述确定了射线的起始点和终点,这里射线的长度为400;输出的是布尔值是射线是否被阻挡,如果被阻挡,强制转换阻挡射线的物体为statue,如果转换成功,说明是雕像阻挡了射线,再调用它的active all函数将smoke,fire,text激活。

技术图片技术图片

 

 

 刚进入游戏是这样的:

技术图片

 

 靠近并点击鼠标左键后被激活:

技术图片

 

 

注意因为法线选择的是control rotation,所以我们必须将屏幕中心点对准该雕像才有用。

法线也可以选择其他方向。比如下面这个,是以鼠标在场景中的三维坐标为起点,方向为该点到摄像机

技术图片

 

 

 我们也可以把 draw debug type 打开,这样就能看到射线的具体位置了。

技术图片

 

 

再比如这样些,使法线的方向一直为角色的forward方向,这样即使我们旋转control 也不会改变射线的发射方向

技术图片

技术图片

 

以上是关于UE4复习4_射线检测的主要内容,如果未能解决你的问题,请参考以下文章

UE4C++学习篇(十五)-- 射线检测之通道检测和对象检测

医学图像处理期末复习

医学图像处理期末复习

保研笔记八——YOLOV5项目复习

光波电子学期末复习资料汇总

光波电子学期末复习资料汇总