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_BlasterBeamTick事件中让子弹按Delta TimeForward 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。在MetaSoundSource设置中,新建Sound Attenuation资产并保存至相应文件夹中,开始编辑音量衰减。

其中最主要的两项就是:

  • Inner Radius:玩家距离在此之外,音量开始衰减;
  • Falloff Distance:玩家距离在此之外,听不到音量;

参考资料

  • Course: Unreal Engine 5 Blueprints - The Ultimate Developer Course | Udemy