目录
效果
步骤
一、准备技能动画
二、准备粒子特效
三、技能蓝图
四、相机震动
前言
在上一篇(【UE5.1 角色练习】06-角色发射火球-part2)基础上继续实现角色释放AOE技能的功能。
效果
步骤
一、准备技能动画
1. 在项目设置中添加一个操作映射,这里命名为“Attack_AOE”
2. 找到小白人的一个动画序列作为释放AOE技能的动作,这里使用名为“Anim_SLB_2”的动画序列
替换骨架
使用IK重定向器导出兼容角色骨骼的动画序列
3. 打开动画蓝图,在动画图表中添加一个状态,这里命名为“Fire_AOE”
添加一个布尔类型变量“IsFiring_AOE”,用于表示当前是否在释放AOE技能
双击进入“Fire_AOE”状态,将我们转换的AOE动画序列拖入作为输出动画姿势
编辑一下状态转换的规则
二、准备粒子特效
1. 新建一个Niagara系统,选“Omnidirectional Burst”作为模板
这里命名为“NS_AOE”
打开该粒子系统,先删除重力模块
在“属性”中,勾选“本地空间”,模拟目标设置为“GPU计算模拟”,计算边界模式为“固定”
在“Emitter State”中设置“Loop Behavior”为“Once”,让粒子只生成一次即可
设置粒子生成的数量为500
在“Initialize Particle”模块中,设置粒子生命周期为3~5s,粒子初始大小为1~2cm
添加一个“Curl Noise Force”模块,设置噪声强度为1000,噪声频率为20
在“Scale Color”中设置一下粒子的颜色
此时效果如下
为了让粒子只在有限的区域内飞舞,我们可以先添加一个自定义模块
这里命名为“Module_RadiusClamp”
在该模块中我们用到粒子的位置,然后再添加一个浮点类型的输入参数,这里命名为“Radius”,表示我们要将粒子限制在半径为“Radius”的球体范围内
由粒子的位置获取到粒子的方向和长度。其中长度是指当前粒子距出生点的距离
当粒子距出生点距离大于半径时,我们就设置粒子的位置为方向*半径;若小于就任然使用粒子自身的位置
我们将该模块添加进粒子更新中,设置“Radius”为500cm
此时效果如下,可以看到粒子被限制在半径为100cm的球形范围内
添加一个旋涡力
添加一个Collsion模块,让粒子碰到物体后能够反弹
此时粒子效果如下
三、技能蓝图
1. 新建一个actor蓝图,这里命名为“BP_Skill_AOE”
打开“BP_Skill_AOE”,添加径向力组件、Niagara系统组件、球体碰撞组件
其中,径向力组件的半径设置为500cm,和粒子范围一样
可以设置一下径向力的强度,并且关闭自动启用,只有当碰撞发生时再启用径向力
如果不想角色被推开,我们可以取消Pawn为受影响的对象
Niagara组件的系统资产使用我们在第二步中创建的Niagara系统
接下来我们希望球形碰撞组件的半径也是像粒子效果那样一开始不断扩大,最终维持在半径500cm的大小,因此在事件图表中先创建一个时间轴用于控制这个过程。
在时间轴中设置三个关键帧的位置分别为(0,0)、(0.5,1)、(3,1)
继续在事件图表中添加如下节点,让球形碰撞组件的半径在3s内由32变为500cm
当发生碰撞后就造成伤害,并且激活径向力
2. 打开角色蓝图,设置按下2键播放角色释放技能时的动画并生成技能
此时运行效果如下,可以看到释放技能的时候将一个具有模拟物理属性的方块推开了
四、相机震动
1. 新建一个蓝图选择父类为“LegacyCameraShake(旧版摄像机晃动)”
这里命名为“CameraShake_AOE”
打开“CameraShake_AOE”,在类默认值中设置振荡时长、混入时间以及旋转振荡的振幅和频率
还有位置振荡的振幅和频率
2. 在角色蓝图中设置在释放技能的时候让摄像机晃动,其中“Scale”参数用于控制晃动的幅度
此时效果如下