虚幻引擎4笔记(7)-持枪射击

文章目录

  • 前言
    • 上一篇笔记
    • 下一篇笔记
    • 动态预览图
    • 蓝图预览
      • [1]. 角色蓝图
      • [2]. 子弹蓝图
  • 一、导入第一人称包
    • [1]. 在开始时选择
    • [2]. 创建后导入
  • 二、创建操作映射(绑定射击键)
  • 三、子弹蓝图
    • [1]. 创建子弹蓝图类
    • [2]. 添加球体
    • [3]. 添加模拟物理组件
    • [4]. 添加球形碰撞组件
    • [5].覆盖根组件
    • [6]. 设置发射速度
    • [7]. 设置反弹
    • [8]. 设置碰撞
    • [9]. 设置子弹大小
    • [10]. 子弹消失蓝图
  • 四、角色蓝图
    • [1]. 创建角色蓝图类
    • [2]. 添加枪把
    • [3]. 添加摄像机
    • [4]. 添加子弹
    • [5]. 蓝图
      • (1) 触发事件
      • (2) 生成子弹
      • (3) 获取子弹位置信息
      • (4) 获取镜头的旋转
      • (5) 将旋转与位置组合成向量
      • (6) 添加加法节点
      • (7) 创建变换
      • (8) 射击音效
  • 五、移动、视角、跳跃

前言

蓝图是虚幻引擎的一个可视化编码语言,不会编程的朋友也能通过蓝图来实现游戏的制作。
本人于2020年的3月份入坑虚幻4,可能技术上有些欠缺,要是有大佬发现哪里错了的话敬请指出。写文章的主要目的是为了记录自己的学习过程,不过也希望能帮助到其他像我一样的朋友学习虚幻蓝图。不同版本的虚幻引擎有进行不同程度的汉化,相应蓝图节点也会变化
此文章中使用的虚幻引擎版本: 4.23.1

随着学习的深入,后面的笔记会慢慢省略一些前面笔记写的内容,有需要的话可以去看较基础的笔记内容

虚幻4官方文档
虚幻4中文官网
虚幻引擎蓝图API参考文档
虚幻引擎4蓝图节点-小狐狸233
注:此篇文章主要是介绍一下持枪和左键射击的内容,其中需要导入一个第一人称的包。

上一篇笔记

虚幻引擎4笔记(6)-过场动画

下一篇笔记

虚幻引擎4笔记(8)-射击准星

动态预览图

蓝图预览

[1]. 角色蓝图

虚幻引擎4笔记(7)-持枪射击_第1张图片
虚幻引擎4笔记(7)-持枪射击_第2张图片

[2]. 子弹蓝图

虚幻引擎4笔记(7)-持枪射击_第3张图片

一、导入第一人称包

[1]. 在开始时选择

虚幻引擎4笔记(7)-持枪射击_第4张图片

[2]. 创建后导入

虚幻引擎4笔记(7)-持枪射击_第5张图片
虚幻引擎4笔记(7)-持枪射击_第6张图片

二、创建操作映射(绑定射击键)

虚幻引擎4笔记(7)-持枪射击_第7张图片

三、子弹蓝图

[1]. 创建子弹蓝图类

记得选择的是Actor类型的蓝图类
虚幻引擎4笔记(7)-持枪射击_第8张图片

[2]. 添加球体

虚幻引擎4笔记(7)-持枪射击_第9张图片

[3]. 添加模拟物理组件

添加一个Projectile Movement组件
虚幻引擎4笔记(7)-持枪射击_第10张图片

[4]. 添加球形碰撞组件

添加一个Sphere Collision碰撞体
虚幻引擎4笔记(7)-持枪射击_第11张图片

[5].覆盖根组件

如果你前几步创建正确的话,组件界面如下图
虚幻引擎4笔记(7)-持枪射击_第12张图片
之后将球体Sphere拖动到碰撞体Sphere1
在这里插入图片描述
虚幻引擎4笔记(7)-持枪射击_第13张图片
然后就是覆盖根组件DefaultSceneRoot了,覆盖的原因是因为根组件的某些配置可能会影响到子弹的碰撞。
拖动碰撞体Sphere1根组件DefaultSceneRoot,让碰撞体Sphere1成为新的根
在这里插入图片描述

虚幻引擎4笔记(7)-持枪射击_第14张图片

[6]. 设置发射速度

如果你没有设置速度的话,发射的子弹就会像是水滴一样落下
选中模拟物理组件ProjectileMovement
虚幻引擎4笔记(7)-持枪射击_第15张图片
在右侧的细节面板中找到下图红圈的配置并修改。
Initial Speed为发射时的初始速度,而Max Speed是子弹能达到的最大速度
你可以将两个速度设置成一样的值
虚幻引擎4笔记(7)-持枪射击_第16张图片

[7]. 设置反弹

选中模拟物理组件ProjectileMovement
虚幻引擎4笔记(7)-持枪射击_第17张图片
Should Bounce选项勾选。
虚幻引擎4笔记(7)-持枪射击_第18张图片

[8]. 设置碰撞

先设置一下对应的碰撞大小
虚幻引擎4笔记(7)-持枪射击_第19张图片
Sphere Radius中设置碰撞球体的半径
虚幻引擎4笔记(7)-持枪射击_第20张图片
选择碰撞的方式,BlockAll表示对任何的物体都能发生碰撞
虚幻引擎4笔记(7)-持枪射击_第21张图片

[9]. 设置子弹大小

选中球体Sphere
虚幻引擎4笔记(7)-持枪射击_第22张图片
Sphere组件中也有碰撞的设置,因为已经在碰撞体Sphere1中设置过了,所以Sphere组件不需要设置。
虚幻引擎4笔记(7)-持枪射击_第23张图片

[10]. 子弹消失蓝图

先进入事件图表,在这你可以设置蓝图,正常来说游戏内的子弹是直接触碰到物体就会直接消失,那个蓝图略微复杂点,在这里还是介绍一个子弹经过一段时间就会消失的蓝图。
如果要当子弹消失的话,需要有一个事件来触发,这就需要用到我们之前创建的射击操作映射了。
虚幻引擎4笔记(7)-持枪射击_第24张图片
虚幻引擎4笔记(7)-持枪射击_第25张图片
然后创建一个延迟节点,当按下射击键过一段时间后,子弹才会消失。
虚幻引擎4笔记(7)-持枪射击_第26张图片
设置经过10秒之后,才会执行下一个节点
虚幻引擎4笔记(7)-持枪射击_第27张图片
添加一个删除自身蓝图类的节点
虚幻引擎4笔记(7)-持枪射击_第28张图片
虚幻引擎4笔记(7)-持枪射击_第29张图片
最后将三个节点按下图顺序相连即可

虚幻引擎4笔记(7)-持枪射击_第30张图片
要记得给该蓝图类编译
在这里插入图片描述

四、角色蓝图

[1]. 创建角色蓝图类

创建蓝图类时,选择Character的类型
虚幻引擎4笔记(7)-持枪射击_第31张图片

[2]. 添加枪把

下图是枪把静态网格体对应的存放位置
虚幻引擎4笔记(7)-持枪射击_第32张图片
点击添加组件,选择Skeletal Mesh(SK_FPGun)来创建,或者是创建了Skeletal Mesh之后,再进行添加Mesh

虚幻引擎4笔记(7)-持枪射击_第33张图片
虚幻引擎4笔记(7)-持枪射击_第34张图片
在视口中调整枪把的位置和方向,枪把方向为蓝色箭头的方向
虚幻引擎4笔记(7)-持枪射击_第35张图片

[3]. 添加摄像机

虚幻引擎4笔记(7)-持枪射击_第36张图片
虚幻引擎4笔记(7)-持枪射击_第37张图片

[4]. 添加子弹

这里的子弹仅仅是为了确定子弹需要生成的位置才创建的,实际射击时生成的是之前创建的bullet蓝图类,而不是此处的球体。

添加一个球体
虚幻引擎4笔记(7)-持枪射击_第38张图片
调整其大小
虚幻引擎4笔记(7)-持枪射击_第39张图片
调整这个球体到枪口处
虚幻引擎4笔记(7)-持枪射击_第40张图片
然后将枪把SkeletalMesh球体Sphere附属到相机Camera下,如果你没有附属到摄像机下的话,之后的上下视角时仅仅是摄像机在移动,而枪把和球体还是会在原位。
虚幻引擎4笔记(7)-持枪射击_第41张图片

到此组件就不需要进行调整了

[5]. 蓝图

(1) 触发事件

进入蓝图类的事件图表中,创建一个射击事件节点。
虚幻引擎4笔记(7)-持枪射击_第42张图片

(2) 生成子弹

创建一个从类生成Actor的节点,如果需要查看这个节点的使用方法可以参考→虚幻引擎4蓝图节点-小狐狸233
虚幻引擎4笔记(7)-持枪射击_第43张图片
因为未选定需要生成的是什么,所以默认为空

Collision Handling Override是设置蓝图类的生成方式
虚幻引擎4笔记(7)-持枪射击_第44张图片
Class中选择刚刚创建的bullet蓝图类
虚幻引擎4笔记(7)-持枪射击_第45张图片
然后将射击事件节点与该执行节点相连
虚幻引擎4笔记(7)-持枪射击_第46张图片
如果只有这两个节点的话,没法确定生成子弹的位置、速度等信息。

所以就需要在Spawn Transform口接入一个变换,确保变换有我们所需要的位置、速度等信息。

(3) 获取子弹位置信息

创建一个获取球体Sphere位置信息的传值节点
虚幻引擎4笔记(7)-持枪射击_第47张图片
弄完后长这样
虚幻引擎4笔记(7)-持枪射击_第48张图片

(4) 获取镜头的旋转

如果没有获取摄像机的旋转方向的话,不管你的视角是什么方向,你的子弹都只会从一个默认的方向发射出去。
我们这时需要选择含有摄像机的GetWorldRotation节点
虚幻引擎4笔记(7)-持枪射击_第49张图片
虚幻引擎4笔记(7)-持枪射击_第50张图片

(5) 将旋转与位置组合成向量

RotateVector节点能够将位置和旋转进行结合
虚幻引擎4笔记(7)-持枪射击_第51张图片
虚幻引擎4笔记(7)-持枪射击_第52张图片
然后将节点GetWorldRotation的输出端连接到RotateVector的输入端
虚幻引擎4笔记(7)-持枪射击_第53张图片

(6) 添加加法节点

虚幻引擎4笔记(7)-持枪射击_第54张图片
在这里插入图片描述
将刚刚的节点与加法节点相连
虚幻引擎4笔记(7)-持枪射击_第55张图片

(7) 创建变换

生成子弹的节点需要传入的是变换Transform类型,所以刚刚的向量没法直接连接。
Make Transform节点就能将向量、位置等信息转换成Transform类型再输出
创建一个MakeTransform节点
虚幻引擎4笔记(7)-持枪射击_第56张图片
虚幻引擎4笔记(7)-持枪射击_第57张图片
将刚刚创建的节点与该节点相连
虚幻引擎4笔记(7)-持枪射击_第58张图片

最后将Make Transform的输出口与生成Actor Bullet节点Spawn Transform接口相连。
虚幻引擎4笔记(7)-持枪射击_第59张图片

(8) 射击音效

前面步骤完成之后,我们的枪就可以有射击的功能了,但是这个射击不会产生相应的声音。
你如果需要射击发出不同的声音时,就需要用到节点Play Sound at Location

虚幻引擎4笔记(7)-持枪射击_第60张图片

Sound接口就能够选择你所需要的音效了,这个节点执行后,会在你需要的位置播放一次音频。

虚幻引擎4笔记(7)-持枪射击_第61张图片
选择音效
虚幻引擎4笔记(7)-持枪射击_第62张图片
创建一个GetWorldLocation(Sphere)节点,Sphere为子弹的位置。
虚幻引擎4笔记(7)-持枪射击_第63张图片
按下图方式进行连接
虚幻引擎4笔记(7)-持枪射击_第64张图片
以上步骤完毕后,编译即可
在这里插入图片描述

五、移动、视角、跳跃

这几个蓝图的话我就直接贴蓝图了,映射和相应的蓝图节点就不介绍了。
你可以参考参考下面的博客
虚幻引擎4蓝图笔记(3)-视角移动
虚幻引擎4蓝图笔记(2)-角色移动
虚幻引擎4蓝图笔记(1)-角色跳跃
虚幻引擎4蓝图节点-小狐狸233
在这里插入图片描述
虚幻引擎4笔记(7)-持枪射击_第65张图片
虚幻引擎4笔记(7)-持枪射击_第66张图片
虚幻引擎4笔记(7)-持枪射击_第67张图片
虚幻引擎4笔记(7)-持枪射击_第68张图片
虚幻引擎4笔记(7)-持枪射击_第69张图片

你可能感兴趣的:(虚幻引擎4)