UE4 技能系统(GAS插件的使用) 01--Build Basic Classes 创建基础类

翻译自Udemy的视频课程introduction-to-unreal-engine-4-ability-system

Build Basic Classes 创建基础类

1、创建工程和人物设置

01、创建Git仓库,使用UE4.22 + VS2019 创建C++基础工程,并添加Paragon Shinbi到工程中

02、创建C++ BaseCharacter,并且基于该Character派生蓝图子类BP_BaseCharacter

UE4 技能系统(GAS插件的使用) 01--Build Basic Classes 创建基础类_第1张图片

03、BP_BaseCharacter中指定Mesh,添加SpringArm和Camera,适当调整位置,编译保存

04、创建蓝图GameMode,命名为BP_GameMode,在其中指定Default Pawn class为BP_BaseCharacter,并且在项目工程设置里(Edit->Project Settings->Maps and Modes)设置Default Mode为BP_GameMode

2、为Shinbi添加基础移动控制

01、Edit->Project Settings->Input 添加输入

UE4 技能系统(GAS插件的使用) 01--Build Basic Classes 创建基础类_第2张图片

02、创建C++ Player Controller类,并基于此派生蓝图子类BP_BasePlayerController,在GameMode中指定PlayerController为BP_BasePlayerController

UE4 技能系统(GAS插件的使用) 01--Build Basic Classes 创建基础类_第3张图片

03、在BP_BasePlayerController的EventGraph中添加基础的移动控制逻辑

UE4 技能系统(GAS插件的使用) 01--Build Basic Classes 创建基础类_第4张图片

UE4 技能系统(GAS插件的使用) 01--Build Basic Classes 创建基础类_第5张图片

UE4 技能系统(GAS插件的使用) 01--Build Basic Classes 创建基础类_第6张图片

 3、添加相机的旋转控制

01、在BP_BasePlayerController的EventGraph中添加基础的相机控制逻辑

UE4 技能系统(GAS插件的使用) 01--Build Basic Classes 创建基础类_第7张图片

 这里设置后不能够控制相机的Pitch

相应的需要在BP_BaseCharacter中设置继承Controller的Pitch和Yaw以便使得Character来使用Controller的旋转,然而你会发现旋转相机的时候人物也会跟着上下旋转

UE4 技能系统(GAS插件的使用) 01--Build Basic Classes 创建基础类_第8张图片

所以采用另一种方式:C++中经常会对SpringArm说bUsePawnControlRoation=true也是这个道理

SpringArm中:

UE4 技能系统(GAS插件的使用) 01--Build Basic Classes 创建基础类_第9张图片

 02、当前的相机设置是符合射击游戏需求的,但是RGP游戏中经常想观察人物(。。。),即不想让左右旋转相机的时候让人物跟着动,将Use Controller Rotation Yaw取消勾选。

UE4 技能系统(GAS插件的使用) 01--Build Basic Classes 创建基础类_第10张图片

 另外还要再Movement component中勾选Oriten Rotation to Movement,这样子在移动的时候,人物在移动的时候会自动转向相机所面对的方向

UE4 技能系统(GAS插件的使用) 01--Build Basic Classes 创建基础类_第11张图片

 03、当在移动的时候相机旋转的太快,人物在转向相机的方向时候不自然,将Rotation Rate 设置的大一些,如720

UE4 技能系统(GAS插件的使用) 01--Build Basic Classes 创建基础类_第12张图片

4、动画蓝图中的EventGraph

01、创建animation blueprint,命名为AnimBP_Shinbi。

02、EventGraph中主要是获取Velocity(用于驱动动画是否奔跑)和IsFalling(用于驱动动画是否跳跃)

 三个变量OwnedCharacter、MeshSpaceVelocity、IsFalling

UE4 技能系统(GAS插件的使用) 01--Build Basic Classes 创建基础类_第13张图片

UE4 技能系统(GAS插件的使用) 01--Build Basic Classes 创建基础类_第14张图片

5、动画蓝图中使用BlendSpace

01、AnimGraph的逻辑是通过状态机实现的,添加一个statemachine,locomotion表明动画发生在local space

UE4 技能系统(GAS插件的使用) 01--Build Basic Classes 创建基础类_第15张图片

02、创建一个BlendSpace,命名为BS_Idle_Walk_Run

UE4 技能系统(GAS插件的使用) 01--Build Basic Classes 创建基础类_第16张图片

03、在动画蓝图中使用该BlendSpace

UE4 技能系统(GAS插件的使用) 01--Build Basic Classes 创建基础类_第17张图片

6、动画蓝图中添加Jump

01、状态机中添加对应的动画与转换逻辑(简化了Jump部分的逻辑)

 UE4 技能系统(GAS插件的使用) 01--Build Basic Classes 创建基础类_第18张图片

 7、使用动画蒙太奇做Melee Attack

在动画蓝图中,Animation montage的播放时通过slot来完成的,

01、创建Animation montage,命名为AM_Shinbi_Melee

02、拖入想要播放的动画片段,可以指定自定义的slot

UE4 技能系统(GAS插件的使用) 01--Build Basic Classes 创建基础类_第19张图片

 03、动画蓝图中,添加一个slot,指明为自定义的slot

UE4 技能系统(GAS插件的使用) 01--Build Basic Classes 创建基础类_第20张图片

04、在BP_BaseCharacter中创建一个Custom Event,当该事件发生的时候用来播放攻击的动画蒙太奇

UE4 技能系统(GAS插件的使用) 01--Build Basic Classes 创建基础类_第21张图片

05、设置输入PrimaryAction绑定到鼠标左键,在BP_PlayerController中的鼠标输入事件中调用MeleeAttack

UE4 技能系统(GAS插件的使用) 01--Build Basic Classes 创建基础类_第22张图片

8、想要在播放动画蒙太奇的过程中不打断下半身的运动,使用layerblendPerBone节点

UE4 技能系统(GAS插件的使用) 01--Build Basic Classes 创建基础类_第23张图片

其中该节点的相关设置,参照Shinbi自带蓝图

UE4 技能系统(GAS插件的使用) 01--Build Basic Classes 创建基础类_第24张图片

(说明,这里的动画上下半身不自然是由于上半身有一个360度转体的动作,如果没有较大转体的动作话会较自然一些,所以将之前的动画蒙太奇中的动画片段改为使用PrimaryMelee_D_Slow),如果我就是想用这种转体较大的动作时,我应该如何做呢?所以就有了下一节:

9、针对Montage中添加Notify

01、第一帧的时候添加一个Notify,命名为StartFullBody,适当的位置添加StartHalfBody

UE4 技能系统(GAS插件的使用) 01--Build Basic Classes 创建基础类_第25张图片

 02、动画蓝图中就会相应的获取到相应的通知事件,设置一个bool变量

UE4 技能系统(GAS插件的使用) 01--Build Basic Classes 创建基础类_第26张图片

 03、AnimGraph中应用BlendPosesByBool

UE4 技能系统(GAS插件的使用) 01--Build Basic Classes 创建基础类_第27张图片

 (说明,这相当于是强制性的播放完整动画,感觉在有的动画播放的时候应该停止移动,在接收到Start HalfBody这个通知的时候才可以移动,这样子才比较合适,如下是我自己添加的部分,主要是在人物中添加了两个CustomEvent用于设置MaxWalkSpeed的大小),此外还需要设置动画的播放速度,太快了反而缺乏感觉

UE4 技能系统(GAS插件的使用) 01--Build Basic Classes 创建基础类_第28张图片

UE4 技能系统(GAS插件的使用) 01--Build Basic Classes 创建基础类_第29张图片

 由于GAS还不完全支持蓝图,需要用到C++,在下一篇中继续记录

你可能感兴趣的:(UE4,GAS)