RPC游戏案例【2. 动作交互】
RPC游戏案例【2. 动作交互】
鲸拓工作室人物状态
本章工程文件为:RPG_Tutorial_Series_04,如遇问题可下载工程文件之后自行对照
预期效果:完善人物的血条,蓝条和经验条,按Alt键能快走,同时耗蓝,正常情况下恢复蓝
状态组件
创建一个Actor组件,命名为BPC_Player_stats
创建如下变量和函数
各函数逻辑如下
HUD
在UI文件夹下创建一个WBP_HUD
人物Pawn
打开BP_ThirdPersonCharacter
修改碰撞预设
打开事件蓝图,补充逻辑
添加BPC_Player_Stats组件
打开Input文件夹,创建一个输入资产,命名为IA_Sprint,然后打开IMC_Default,添加如下的输入映射
回到BP_ThirdPersonCharacter,补充如下逻辑,在普通状态下以固定速度回蓝
加速跑逻辑
优化逻辑
最后复制一个动画
增大比率范围
打开之前的混合空间
应用上这个动画,这样加速跑的时候,人物的双腿就动的更快
连招
本章工程文件为:RPG_Tutorial_Series_05,如遇问题可下载之后自行对照
预期效果:玩家多次点击鼠标,可以触发连招
首先把连招动作导入RPC_Character/Animations/SwordAttacks文件夹内
把每个动画的启用跟运动都打开
然后选中所有动画,右键,一键创建蒙太奇
在编辑蒙太奇之间,先创建两个通知蓝图,命名为 AnimNotify_SwordCombo 和 AnimNotify_SwordComboEnd
分别重写他们的Received Notify函数
打开Attack1_Montage,在轨道1上创建上面新建的通知
打开Attack2_Montage
打开Kick_Montage
打开Attack3_Montage
上面动画素材准备好之后,我们再补充一些逻辑
首先打开Input文件夹,创建一个输入操作数据资产,命名为IA_Attack
打开IMC_Default,新增一个启用连招的触发条件,同时修改一下暗杀的触发条件
接着回到Blueprints文件夹,创建一个Actor组件,命名为BPC_AttackSystem
在事件图表中补充如下逻辑
到这里就已经基本实现连招的逻辑了,接下来我们再把人物的剑补上
在工程中创建一个Sword文件夹,然后导入Resource里面的Sword文件夹资产
导入之后,右键Sword_Base_Color,创建一个材质,命名为M_Sword
将这个材质应用到模型上
打开人物骨骼,选中hand_r,创建一个插槽,然后添加Sword为预览资产,将这把剑摆放到合适的位置
最后在BP_ThirdPersonCharacter上应用这把剑,就大功告成了
命中反应
本章工程文件为:RPG_Tutorial_Series_06,如遇问题可下载之后自行对照
预期效果:玩家对敌人发动攻击,敌人会有受伤反应
首先把反应动作导入RPC_Character/Hit_Reacts文件夹内
刀剑碰撞
为了检测我们在挥刀的过程中,刀是否碰到了敌人,我们需要在刀身上加两个箭头组件
然后打开BPC_AttackSystem,编写如下逻辑,用于检测刀身是否碰到了敌人
在这边加上调用,然后运行看看检测效果
可以看到,当刀穿过敌人的时候,就会变绿,说明碰撞已经被检测到了
但是我们不能这么草率的在蓝图中直接调用检测逻辑,而是需要用动画通知来实现
所以删掉这个调用
再完善一下追踪逻辑
创建一个动画通知状态,命名为BP_Notify_SwordTrace_Loop
接着打开蒙太奇,应用这个动画通知状态
接着再运行案例,就会发现,角色只有播放到对应的动画位置时,才会检测刀身碰撞
打开BP_Dummy,给敌人打上一个标签Damageable,用于检测碰撞的对象是否为敌人
再创建一个摄像机晃动,命名为BP_Sword_HitCameraShake
将敌人检测和摄像机晃动逻辑补充到AttackSystem里,完成蓝图如下
身体碰撞
上面的逻辑里只检测了刀剑碰撞,连招中还有踢击和穿刺需要检测
打开BP_ThirdPersonCharacter,添加一个箭头组件,用于检测前方位置
打开BPC_AttackSystem,创建一个身体碰撞的事件
接下来再创建一个动画通知,命名为BP_Notify_SphereTrace
将这个动画通知应用到蒙太奇中
最后在敌人蓝图里,加上一点冲击力就好了
其中hitAnims变量是一个蒙太奇数组,里面默认定义了两个受伤反应的动画