GameplayAbilitiesSystem(五)
目录前言角色动画蓝图敌人动画蓝图敌人通用动画蓝图模板敌人动画蓝图总结前言前面我们创建角色类、敌人类和角色蓝图、敌人蓝图并为其添加了武器组件但现在如果把角色放到关卡中角色会比较呆板所以本章节我们为角色添加上动画效果。同样先由角色开始。角色的动画一般由蓝图实现称之为动画蓝图。角色动画蓝图Content - Blueprints - Character - Aura 下面右键选择 Animation - Animation Blueprint列表中再选择 SK_Aura即以 SK_Aura 骨骼网络为动画蓝本创建角色的动画蓝图。角色动画蓝图命名为 ABP_Aura创建成功后双击打开。由于角色在关卡中会有不同的状态不同状态下角色会有不同的动作或动画所以我们需要创建一个状态机。在动画蓝图空白处右键搜索 state machine选择State Machine命名为 Main States如下图所示。将状态机与输出连接前还需要在中间加一个 SlotSlot 是用来播放蒙太奇的这里先不做过多介绍后面会详细说。创建 Slot 方法同状态机差不多右键空白处搜索 default slot选择 Slot ‘DefalutSlot’然后将状态机Slot 和 Output Pose 依次连接起来。状态机有了但是还需要定义角色有哪些状态双击状态机进到状态机编辑界面会默认看到一个 Entry 节点从它右侧拖拽会弹出节点选择窗口选择 Add State命名为 IdleWalkRun。这样我们就为角色状态机添加了一个状态节点。切换到 ABP_Aura 蓝图编辑界面在右侧 Assets Browser 中找到名字同为 IdleWalkRun 的动画资源拖到空白处并将其输出连接到 Output Animation Pose 的输入。我们可以看到拖进来的动画节点是需要有输入 Speed所以点击上面 Event Graph 页签并定义我们需要的变量。角色的速度属性可以通过角色蓝图来获得在 ABP_Aura 蓝图中默认有 Try Get Pawn Owner 组件右侧拉出选择 Cast to BP_AuraCharacter 就得到了我们的角色蓝图对象再从 As BP Aura Character 引脚拖出选择 Promote to variable 提取为变量将该变量命名为 BP_Aura_Character再从该变量输出引脚拉出选择 Get Character Movement同样将其提取为变量命名为 CharacterMovement。最后用 Event Blueprint Initialize Animation 事件串联起来。这样我们可以在左侧 My Blueprint 页签中 Components 下看到角色蓝图和角色运动变量。左键将角色蓝图变量拖拽到编辑区域空白处选中并右键选择 Convet to Validated Get。同样将角色运动变量也拖拽到空白处从角色运动变量中提取 Get Velocity再从 Velocity 中提取 Vector Length XY将其 Promote to Variable命名为 GroundSpeed最后用 Event Blueprint Initialize Animation 事件串联起来如下图所示。切换到 IdleWalkRun 页签将 GroundSpeed 变量拖进空白处与 IdleWalkRun 节点输入相连。这样我们就有了角色的二维速度作为该状态的输入了。回到 BP_AuraCharacter 蓝图选中 Mesh 节点右侧 Animaion - Anim Class 设置为 ABP_Aura。便可以在预览界面看到我们的角色目前处于 IdleWalkRun 状态并播放该动画。敌人动画蓝图我们知道在游戏中主角只有一个大部分但是敌人却有很多个且多种多样。所以为了避免为每一种敌人都设置一遍动画就需要添加一个通用动画模板以节省大量重复工作。敌人通用动画蓝图模板还记得在创建角色动画蓝图时默认选择的是 Specific Skeleton 页签下的 SK_Aura吗既然我们想创建通用模板就不能用同样的方法。幸好 UE 为我们提供了模板蓝图类在创建动画蓝图时选择 Template点击 Create并命名为 ABP_Enemy。既然是通用动画蓝图模板肯定与角色动画蓝图不太一样。在我们创建的 ABP_Enemy 蓝图中同样添加状态机用 Slot 与 Output Pose 连接。双击状态机进到状态机编辑界面这里我们不会像角色蓝图状态机那样直接把 IdleWalkRun 动画资源拖拽进来而是右键空白处搜索 blend space player。Blend Space Player 是一个通用节点其输出连接到 Output Animation Pose 的输入。而当我们从这个通用动画模板蓝图创建子动画蓝图时只需选择这个 Blend Space Player 即可。Blend Space Player 有 x, y 输入这里我们只用到 x。同样这里需要获取敌人的运动参数作为输入跟角色动画蓝图一样需要要从敌人蓝图中提取并定义为 GroundSpeed 变量。将 GroundSpeed 变量的输出与 Blend Space Player 的 x 输入引脚相连。敌人动画蓝图有了通用动画蓝图模板再创建敌人动画蓝图时就可以选择 Specific Skeleton 下面的 Parent Class 了。Parent Class 当然是刚刚创建的 ABP_Enemy蓝图。同时选择 SK_Goblin 作为动画蓝图的骨骼网络命名为 ABP_Goblin_Spear拿长矛的哥布林动画蓝图。创建好动画蓝图后就不需要再像角色蓝图那样创建状态以及状态动画了只需要在 ABP_Goblin_Spear 动画蓝图中选择 Asset Override Editor配置 IdleWalkRun 状态的 Blend Space Player 为 BS_GoblinSpear_IdleRun动画资源即可。切换到 BP_Goblin_Spear 蓝图如果你已经创建的话将其 Anim Class 设置为 ABP_Goblin_Spear 即可实现编辑界面的预览效果。总结有了角色动画蓝图敌人通用动画蓝图模板我们还可以创建其它种类敌人的蓝图及动画蓝图但在创建其它敌人动画蓝图时可以继承通用动画蓝图模板剩余只需更换模型和调整动画资源即可节省大量工作。下一章节我们为角色增加增强输入系统有了输入系统玩家才可以控制我们创建的角色。