03 - 创建与发射投射物
接下来想做几个蓝图项目练练手,并将其以系列文章的形式记录到我的博客上,这里继续第一个蓝图项目Bad Bot
。
本篇文章将简要描述,包括如下内容:
- 使用UE5内置建模模式创建简单子弹模型,并为其创建材质;
- 在机器人的两个枪口处发射子弹,这需要创建子弹蓝图类
BP_BlasterBeam
,然后在枪口处生成它的实例; - 使用
Projectile Movement
实现子弹的移动; - 使用定时器重复发射子弹;
- 处理子弹的碰撞事件;
- 使用
Niagara
粒子系统创建子弹发射时的特效; - 使用
Meta Sounds
音频系统播放子弹发射时的声效。
创建子弹资产
创建子弹模型
在编辑器左上角可以选择编辑模式,这里选择建模模式。然后就会跳到建模界面,我们新建一个圆柱,调整适当大小后,在XForm - EditPriot
界面调整坐标轴,让它朝向正X:
点击接受后,这个子弹模型就会另存为Maps/_GENERATED/用户名/CYlinder_XXXXXXX
。接下来将模型移入我们自己的Assets
文件夹中,命名为SM_BlasterBeam
。
创建子弹材质
接下来为子弹创建材质,我们希望它是红色且有光泽的,可以以红色为基础,并将其乘以120,作为自发光颜色:
生成与发射子弹
创建子弹蓝图类
接下来要将子弹生成到枪口处。在UE5中,万物皆Actor
,因此要创造子弹的Actor
蓝图类BP_BlastBeam
。
生成与销毁子弹
在BP_Bot
中,我们想要于2s后在机器人的左枪口处生成一个子弹实例,并于2s后销毁它,蓝图实现如下:
其中,我们通过Get Socket Transform
节点获取机器人左枪口处的世界坐标位置;然后通过Spawn Actor From Class
节点生成子弹蓝图类BP_BlasterBeam
的实例;最后于2s后通过Destroy Actor
销毁子弹蓝图。
此外,也能让BP_BlasterBeam
自己在2s后销毁自己。这需要在BP_BlasterBeam
中设置该Actor
的生命周期lifespan
。
让子弹移动
接下来让子弹移动,除了可以在BP_BlasterBeam
的Tick
事件中让子弹按Delta Time
朝Forward Vector
偏移外,还能使用投射物移动组件。该组件为投射物的移动专门定制,可以定义它的初速度,是否有重力等属性。
使用定时器
接下来尝试使用定时器让子弹重复发射:
Set Timer by Event
节点设置了一个计时器,它每秒都会调用Do Loop Fire
自定义事件。而Do Loop Fire
自定义事件则是执行子弹的生成。
处理子弹碰撞
子弹的VFX
创建粒子特效
接下来尝试使用UE5新推出的粒子系统Niagara
(之前是Cascade
),让子弹在开火时播放粒子特效。
要想创建一个Niagara
粒子系统,需要在FX
选项中选择Niagara System
。接下来UE5会让我们选择新建的粒子系统应基于什么发射器或系统。这里选择OmnidirectionalBurst
。
接下来进入Niagara
的编辑器,可以发现该粒子系统支持蓝图编程,很是灵活。默认由一个系统节点和一个粒子发射器节点组成。
上图是一个粒子发射器节点,它由五部分组成:
Emitter Spawn
:粒子发射器刚生成时执行的模块;Emitter Update
:粒子发射器在每帧更新时执行的模块;Particle Spawn
:粒子在刚生成时执行的模块;Particle Update
:粒子在每帧更新时执行的模块;Sprite Renderer
:负责渲染每一个粒子的形状;
也能同时存在多个粒子发射器,这将综合它们的效果:
生成粒子特效
使用Spawn System at Location
节点生成Nigara
特效:
播放音效
使用Play Sound at Location
在指定地点播放音效,使用Play Sound 2D
在相同Volume
中播放音效(例如BGM)。
创建自己的音效
接下来利用UE5的Meta Sound
系统创建自己的音效,需要选中Audio/MetaSound Source
。和Niagara
类似,MetaSound
也支持蓝图编程。
如上图所示,要想创建一个音效需要许多节点(这里只是简单播放音效)。其中Wave Player
是最重要的,没有它就不能播放出声音。存在多种Wave Player
,通过左上角MetaSound
设置中修改输出,可发现有单声道mono
,双声道stereo
等。
上图编写了一个简单的MetaSound
,以开枪音效数组为输入,接着随机选择一个,并应用随机音高进行播放。
音效衰减
为了让玩家体验更加真实,离声源越远,播放的音量越低,应该使用音量衰减Sound Attenuation
。在MetaSound
的Source
设置中,新建Sound Attenuation
资产并保存至相应文件夹中,开始编辑音量衰减。
其中最主要的两项就是:
Inner Radius
:玩家距离在此之外,音量开始衰减;Falloff Distance
:玩家距离在此之外,听不到音量;
参考资料
- Course: Unreal Engine 5 Blueprints - The Ultimate Developer Course | Udemy