如今,许多不同的射击游戏为其枪法提供了各种不同的机制,从《战地风云》的慢速射击和快速落下的子弹,到《使命召唤》的激光快速,百分百准确的超级武器。 两者的工作都很有趣,但是Hitscan的射击游戏(例如《使命召唤》和《彩虹六号:围攻》)似乎更加流畅和快节奏。
我将使用虚幻引擎的蓝图,向您展示如何使用提供给该引擎的任何人都可以访问的“第一人称射击”模板创建一种易于修改的“线描”武器。 概括地说,虚幻的蓝图是为没有引擎或C ++经验的任何人定制和构建游戏的主要基础。 这也称为拖放编程,因为您基本上就是通过这样做来创建方法和依赖项的。 虽然一开始非常令人生畏,但是一旦您遵循了本教程,我相信您会被鼓励尝试并进行测试。 YouTube上还有许多可用的教程,以及Unreal的answerHub,您可以在其中提问(如果尚未提出问题)。
找到正确的蓝图
首先,启动虚幻引擎4,然后创建一个新项目。 确保留在“蓝图”选项卡上,并选择本教程的“第一人称”模板。

进入引擎后,您将需要在右侧的世界大纲中找到“ FirstPersonCharacter”。 找到它后,右键单击并选择“ Edit FirstPersonCharacter”,这将打开蓝图编辑器。 您将进入以下屏幕:

控件非常简单,要在您周围移动,请右键单击并拖动窗口。 某些选定的Blueprint方法将在右侧的“详细信息”选项卡中生成字段,在您的左侧,您将看到构成该项目中“ FirstPersonCharacter”角色的所有组件,无论它们是隐藏的内部数据还是可见的动画。
创建线迹


为了找到正确的方法,在这种情况下,这是在输入中发射武器的方法,请朝底部看,底部是标记为生成弹丸的较大“灰色区域”。 将有一个名为“ InputAction Fire”的红色方法,这是您单击鼠标按钮时首先调用的方法。 您将要取消链接,方法是按住ALT键并单击白色箭头中的线(这些称为锁孔)。
完成此操作后,您将需要将方法从那里拖走,只是为了创建空间。 其余部分现在无关紧要,因为它只是死空间,因此可以删除。 通过我们创建的声音效果,可以产生一般效果。
完成此操作后,您将需要单击并向右拖动“ Pressed”钥匙孔,然后应提示您选择一个功能。 在此搜索框中,键入“ LineTraceByChannel”,然后单击匹配的结果。 确保它是这个,因为有许多稍微不同的选择。 完成后,结果应如下所示:

为了说明我们刚刚创建的内容,LineTraceByChannel函数是一种用于创建行踪迹的工具,其原因有很多(在我们的案例中为射击机制,其他可能性包括模拟敌人视力的隐形游戏机制等)。 “开始”输入(线迹应从此输入)和“结束”输入(线应在何处结束)。 “忽略角色”使您可以忽略对象,在我们的案例中,一个简单的例子就是Glass。 您可以将它们拖到此处,或从锁孔中创建一个数组,并创建一个更格式化的列表。 “ Trace Channel”和“ Trace Complex”对于我们的情况几乎没有用,但是我们应该知道调试类型的作用。 将其设置为“ Permanent”或“ For Duration”意味着在创建(或调试)游戏时,您将能够看到这些行的去向。 一旦您真正了解了此蓝图并开始在此Line Trace上构建,这非常重要,因此请将其设置为这两个中的任意一个。 即使使用这种简单的技术,您也永远不会知道会产生什么样的错误。 完成后,剩下要做的就是设置线迹的起点和终点。 乍一看似乎有些复杂,但实际上,一旦我们完成并进行了解释,就很容易理解。
开始
首先,在“组件”选项卡下,查看编辑器的左侧,然后找到“ FirstPersonCamera”组件。 将组件从那里拖到“蓝图”垫上。 该摄像机模拟了我们在游戏中的视力,将成为此Line Trace的起点。 如果需要,还可以将喷枪模型设置为“开始”。 将其中之一拖到垫子上后,将鼠标从组件的钥匙孔拖到空白处,然后搜索“ GetWorldLocation”,听起来很奇怪。 完成此操作后,将鼠标指针从GetWorldLocation框中拖到“ LineTraceByChannel”方法的“开始”锁孔中。 最终结果将如下所示:

结束
为了创造目标,我们还需要更多。 毕竟,您实际上想朝着您所看的方向开枪(尽管对机械进行盲目射击会很酷)。 为此,请首先再次将指针从相机锁孔中拖动,搜索“ GetForwardVector”。 在这种情况下,此功能基本上返回摄像机前面的位置1单位。 显然,枪支射击的距离相当远,而该引擎中的一个单位相当于一英尺,因此我们需要将其乘以1。 这可以通过从GetWorldLocation锁孔中拖动并查找“ Vector * Float”(向量乘以float)来完成,然后将要求一个float变量乘以该变量(在本例中为1)。 对于模板映射,一个数字(例如10,000)就足够了,所以这样做。
太好了,现在您已经有了Line Trace的绘制距离,但是我们仍然需要让Endpoint知道起点在哪里,听起来很奇怪。 为此,返回到“ GetWorldLocation”功能并拖出另一行以创建“ Vector + Vector”。 忽略它试图请求的变量,因为我们要通过将其“钥匙孔*浮点数”功能从其锁孔拖入Vector附加项中来为我们完成此操作。 完成此操作后,您可以将添加项拖到终点,并为射手模板创建基本的“行迹”机制。 看起来是这样的:

确保单击顶部的“编译”,保存此蓝图,关闭蓝图编辑器,然后在主引擎界面上单击播放。 如果一切顺利,则不应使用模板中的怪异射击技工,而应通过每次单击鼠标按钮来绘制线条。
这是蓝图的基本介绍,也是创建基本的街机FPS风格射击技师的介绍。 谢谢阅读!