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

发表于2016-11-18
评论2 1w浏览


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


   在一些游戏中,有一个功能是准星对准物体,然后物体显示高亮。

比如说:
一、FPS类游戏,准星对准队友,队友显示为绿色框,对准敌人,敌人显示为红色框。
二、拾取物品,准星对准物品,物品显示高亮。(当然还有一种是鼠标放到物体上,物体显示高亮)。

分析:
  想象一下,怎么实现这个功能呢?
  两个字:射线。

射线的两种方案:
1、取屏幕中心点,转换为世界坐标,向外发射射线。
2、取场景中摄像机位置,向前发射射线。
  需要准备的:创建一个第一人称蓝图的实例,创建一个简单场景,创建几个简单地物品。(大家随便建)
  如下图:


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


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


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


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


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


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


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


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

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引

0个评论