美文网首页UE4制作沙盒RPG
RPG游戏开发日志3:简单技能的实现

RPG游戏开发日志3:简单技能的实现

作者: 李维民0512 | 来源:发表于2019-04-23 23:01 被阅读0次

    本项目同步上传于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

    总结

    运行,测试,完美(至少目前为止是这样的)!

    相关文章

      网友评论

        本文标题:RPG游戏开发日志3:简单技能的实现

        本文链接:https://www.haomeiwen.com/subject/kcrrgqtx.html