UE4准星对准物体高亮(上)--发射射线的两种方式
发表于2016-11-18

从屏幕中心发射射线的方法,效果图:

在一些游戏中,有一个功能是准星对准物体,然后物体显示高亮。
比如说:
一、FPS类游戏,准星对准队友,队友显示为绿色框,对准敌人,敌人显示为红色框。
二、拾取物品,准星对准物品,物品显示高亮。(当然还有一种是鼠标放到物体上,物体显示高亮)。
分析:
想象一下,怎么实现这个功能呢?
两个字:射线。
射线的两种方案:
1、取屏幕中心点,转换为世界坐标,向外发射射线。
2、取场景中摄像机位置,向前发射射线。
需要准备的:创建一个第一人称蓝图的实例,创建一个简单场景,创建几个简单地物品。(大家随便建)
如下图:

实现方法:
A、取屏幕中心点法。
首先,打开第一人称角色蓝图,在左边的Functions中创建一个函数,取名随意,我这里取名为Trace,如下图:

然后Trace函数会自动打开,我们在接着Trace创建一个LineTraceByChannel,如下图:

这个方法就是创建一条射线,起点与终点就是Start与End。
起点是屏幕中点,那首先让我们获取屏幕大小,然后打散,再除以二,如下图:

右键创建一个convertScreenLocationToWorldSpace方法(该方法是把当前屏幕坐标转换为世界坐标域),然后再创建一个GetPlayerController,分别把刚刚屏幕大小打散获得的XY值以及GetPlayerController与ConvertScreenLocationToWorldSpace相连,如下图:

这样,我们就得到了屏幕中心点的世界坐标和方向。而终点就是当前坐标加上方向乘以一个长度。链接如下图:

我们可以用下图的选项来测试我们的射线是不是正确的。如下图:

B、取摄像机位置法。
该方法我用一张图表示出来,测试的时候根据场景的不同可能会有点问题,具体原因没有找到,但大部分情况是正确的。如下图:

本篇讲解的是从屏幕中心发射射线的方法,下一篇讲解使物体高亮的判断逻辑。