本项目同步上传于github和coding上,国内读者可以通过在coding下载项目,从本篇开始,已经将Tutorial分支合并到dev分支,之后只在dev分支做开发,并保证master分支是相对稳定的版本。也欢迎你加入我的UE4学习交流QQ群:872537977。如果你喜欢我写的文章,也希望你点赞、收藏、转发。谢谢!
github地址:https://github.com/Liweimin0512/uRPG
coding地址:https://git.dev.tencent.com/JeremyBrett/uRPG.git
这篇文章我们制作2个十分粗糙的技能,分别是这样的效果:
1、恢复自身一定数值的生命值
2、向角色前方发射一个火球,并对碰触到的第一个敌方角色造成伤害
请注意,这篇文章所实现的方式本身存在很多缺点,之所以这样做是为了解释我在开发中踩过的坑,并且为之后的重构做一个伏笔,这里我们不会引入“动画蒙太奇”的概念。但看完这篇文章,你基本会理解这个玩意儿真的很有用。
项目设置
首先在 项目设置-输入 中添加一些技能案件,我这里添加了10个,分别对应按键1~0:
添加ActionMapppings动画状态机调整
首先是状态机的调整,这里我们加入两个动画状态,直接在右下角选择对应名称的动画并添加到这里即可。
状态机调整并且在动画状态机蓝图中添加两个布尔型变量,分别命名为Casting1H和Attack,用于状态的切换。
布尔型变量因为很简单,这里只贴出其中一个条件,其他同理。
CanEnterTransition之后就是在状态机的事件图表中,我们需要将Owner 转换为 Bp_CharacterBase类型,才能获取Bp_CharacterBase蓝图中的这两个变量(也就是说在角色蓝图中也需要两个同名、同类型变量),并和蓝图中的这两个同名变量关联上。
关联上变量这样动画蓝图中的准备工作就做好了,这一步操作的目的其实就是让角色在释放技能时候播放对应的动作。
技能设计思路
技能释放的流程大体如下:
1、从玩家输入释放技能的指令开始;
2、判断能否释放技能(状态判断、技能CD判断等);
3、释放技能,这部分包括技能表现效果(播放动作、生成特效等)、技能逻辑效果(产生一个道具、改变角色状态或属性等)两部分;
4、进入技能CD阶段;
其实更深层次的考虑的话,技能还应该拆分为前摇、生效、后摇等几个阶段。但这不在这篇日志的讨论范围内,会在之后技能的进阶开发日志中做更详细的讨论。
恢复生命值效果技能
当玩家输入指令后,首先进行判断,我这里做的判断包括:技能CD判断、是否正在释放技能判断、Mana值是否足够判断。
技能释放判断当Mana值不足时,会有一个提示效果,效果很简单会在后文中详述。这里给出蓝图节点如下
Mana不足提示技能判断通过,可以释放技能了,我这里首先禁用了角色的移动(不禁用也可以,只是会很违和。因为释放技能的动作没有和移动动作融合,这个也会在之后的文章中详述)
禁用移动然后便是技能的效果,首先就是播放动作,只需要将变量Casting1H设置为True即可。然后便是通过上篇文章所写的StatManager提供的ModifyStat函数对Mana和Health的数值进行调整即可。
技能效果实际上这时候技能效果已经完成了,这里我额外在角色Mesh的右脚(RightFoot)骨骼的坐标位置生成一个特效。然后手动创造了一个2秒钟的延迟(基本是动作播放完成的时间)。并将Casting1H变量归位即可。哦对了,别忘了把移动重新开启。
技能特效这个特效包含在免费素材中,可以直接下载使用很方便
Infinity Blade:Effects最后,技能完成,进入CD阶段,其实CD阶段也很简单。我这里假设技能CD默认为1,当技能CD不为1的时候就+0.05,然后延迟0.2秒钟循环判断,直到CD为1为止:
技能CD这样,一个技能就算是完成了,运行一下,试一试,OK可以。进行下一项。
攻击技能
攻击技能让我们释放一个火球,所以首先我们创造一个火球Actor命名为MagicProjectTile,这个Actor中有两个比较重要的组件1个是Sphere我们选一个好看的特效即可。一个就是ParticleSystem用以控制移动。
火球Actor技能的判断与上面的技能相同,这里不再重复了,重点看技能的效果实现部分。这里我用了两个Delay节点,其实就是模拟上文中说到的前后摇时间,在动作播放到恰当的时候才创建这个火球,并通过获取角色当前位置做一个偏移的位置来生成火球。
生成MagicProjectTile之后的技能CD部分与上文中的恢复生命值技能相同,这里也略过不谈。
UMG_NoManaPopup
其实这个UI只是一个添加了动画的Text控件,动画的内容就是在一段时间内改变了控件的Transform和透明度,感兴趣的可以直接看源码。
UMG_NoManaPopup总结
运行,测试,完美(至少目前为止是这样的)!
网友评论