蓝图是虚幻引擎的一个可视化编码语言,不会编程的朋友也能通过蓝图来实现游戏的制作。
本人于2020年的3月份入坑虚幻4,可能技术上有些欠缺,要是有大佬发现哪里错了的话敬请指出。写文章的主要目的是为了记录自己的学习过程,不过也希望能帮助到其他像我一样的朋友学习虚幻蓝图。不同版本的虚幻引擎有进行不同程度的汉化,相应蓝图节点也会变化。
此文章中使用的虚幻引擎版本: 4.23.1
随着学习的深入,后面的笔记会慢慢省略一些前面笔记写的内容,有需要的话可以去看较基础的笔记内容。
虚幻4官方文档
虚幻4中文官网
虚幻引擎蓝图API参考文档
虚幻引擎4蓝图节点-小狐狸233
注:此篇文章主要是介绍一下持枪和左键射击的内容,其中需要导入一个第一人称的包。
虚幻引擎4笔记(6)-过场动画
虚幻引擎4笔记(8)-射击准星
如果你前几步创建正确的话,组件界面如下图
之后将球体Sphere拖动到碰撞体Sphere1下
然后就是覆盖根组件DefaultSceneRoot了,覆盖的原因是因为根组件的某些配置可能会影响到子弹的碰撞。
拖动碰撞体Sphere1到根组件DefaultSceneRoot,让碰撞体Sphere1成为新的根
如果你没有设置速度的话,发射的子弹就会像是水滴一样落下
选中模拟物理组件ProjectileMovement
在右侧的细节面板中找到下图红圈的配置并修改。
Initial Speed为发射时的初始速度,而Max Speed是子弹能达到的最大速度
你可以将两个速度设置成一样的值
选中模拟物理组件ProjectileMovement
将Should Bounce选项勾选。
先设置一下对应的碰撞大小
在Sphere Radius中设置碰撞球体的半径
选择碰撞的方式,BlockAll表示对任何的物体都能发生碰撞
选中球体Sphere
Sphere组件中也有碰撞的设置,因为已经在碰撞体Sphere1中设置过了,所以Sphere组件不需要设置。
先进入事件图表,在这你可以设置蓝图,正常来说游戏内的子弹是直接触碰到物体就会直接消失,那个蓝图略微复杂点,在这里还是介绍一个子弹经过一段时间就会消失的蓝图。
如果要当子弹消失的话,需要有一个事件来触发,这就需要用到我们之前创建的射击操作映射了。
然后创建一个延迟节点,当按下射击键过一段时间后,子弹才会消失。
设置经过10秒之后,才会执行下一个节点
添加一个删除自身蓝图类的节点
最后将三个节点按下图顺序相连即可
下图是枪把静态网格体对应的存放位置
点击添加组件,选择Skeletal Mesh(SK_FPGun)来创建,或者是创建了Skeletal Mesh之后,再进行添加Mesh。
这里的子弹仅仅是为了确定子弹需要生成的位置才创建的,实际射击时生成的是之前创建的bullet蓝图类,而不是此处的球体。
添加一个球体
调整其大小
调整这个球体到枪口处
然后将枪把SkeletalMesh和球体Sphere附属到相机Camera下,如果你没有附属到摄像机下的话,之后的上下视角时仅仅是摄像机在移动,而枪把和球体还是会在原位。
到此组件就不需要进行调整了
创建一个从类生成Actor的节点,如果需要查看这个节点的使用方法可以参考→虚幻引擎4蓝图节点-小狐狸233
因为未选定需要生成的是什么,所以默认为空
Collision Handling Override是设置蓝图类的生成方式
在Class中选择刚刚创建的bullet蓝图类
然后将射击事件节点与该执行节点相连
如果只有这两个节点的话,没法确定生成子弹的位置、速度等信息。
所以就需要在Spawn Transform口接入一个变换,确保变换有我们所需要的位置、速度等信息。
创建一个获取球体Sphere位置信息的传值节点
弄完后长这样
如果没有获取摄像机的旋转方向的话,不管你的视角是什么方向,你的子弹都只会从一个默认的方向发射出去。
我们这时需要选择含有摄像机的GetWorldRotation节点
RotateVector节点能够将位置和旋转进行结合
然后将节点GetWorldRotation的输出端连接到RotateVector的输入端。
生成子弹的节点需要传入的是变换Transform类型,所以刚刚的向量没法直接连接。
而Make Transform节点就能将向量、位置等信息转换成Transform类型再输出。
创建一个MakeTransform节点
将刚刚创建的节点与该节点相连
最后将Make Transform的输出口与生成Actor Bullet节点的Spawn Transform接口相连。
前面步骤完成之后,我们的枪就可以有射击的功能了,但是这个射击不会产生相应的声音。
你如果需要射击发出不同的声音时,就需要用到节点Play Sound at Location
Sound接口就能够选择你所需要的音效了,这个节点执行后,会在你需要的位置播放一次音频。
选择音效
创建一个GetWorldLocation(Sphere)节点,Sphere为子弹的位置。
按下图方式进行连接
以上步骤完毕后,编译即可
这几个蓝图的话我就直接贴蓝图了,映射和相应的蓝图节点就不介绍了。
你可以参考参考下面的博客
虚幻引擎4蓝图笔记(3)-视角移动
虚幻引擎4蓝图笔记(2)-角色移动
虚幻引擎4蓝图笔记(1)-角色跳跃
虚幻引擎4蓝图节点-小狐狸233