Init
This commit is contained in:
54
05-SDHGame/ActionRPG时代的设计/GameplayAbility与角色类武器类逻辑.md
Normal file
54
05-SDHGame/ActionRPG时代的设计/GameplayAbility与角色类武器类逻辑.md
Normal file
@@ -0,0 +1,54 @@
|
||||
## ActionRPG中的文件夹结构
|
||||
```
|
||||
Ability
|
||||
|——DataTables (数据表)
|
||||
|——Enemies (敌人的能力)
|
||||
|——Player (玩家的能力)
|
||||
└──Shared (继承c++父类的基础蓝图类)
|
||||
```
|
||||
## 需要实现的基础能力类
|
||||
GA_MeleeBase
|
||||
GA_PotionBase
|
||||
GA_Skill
|
||||
GE_DamageBase
|
||||
GE_DamageImmune
|
||||
GE_HealBase
|
||||
GE_MeleeBase
|
||||
GE_RangedBase
|
||||
GE_StatsBase
|
||||
|
||||
|
||||
## 武器类实现
|
||||
其中主要的攻击逻辑位于WeaponActor中。(ActionRPG中是WeaponActor引用DataAsset)
|
||||
基础的DataAsset用于设置数据(GameplayAbility)以及关联需要加载Asset。
|
||||
### 攻击判定
|
||||
OverlapBegin:
|
||||
对进入判定区域的Actor发送hit信息,也就是GameplayEventData,里面带有事件类型(攻击类型)、施放者与目标。
|
||||
OverlapEnd:用于重置OverlapBegin中的DoOnce判断。
|
||||
|
||||
BeginWeaponAttack:设置初始相关变量,设置IsAttacking为true,开启碰撞判断
|
||||
EndWeaponAttack:设置IsAttacking为false,关闭碰撞判断。
|
||||
### 伤害以及队伍判定
|
||||
队伍判定可以使用GameplayEffect做成Buffer进行判断,之后再使用计算类或者修改类进行伤害计算。
|
||||
|
||||
### 关于GA_MeleeBase部分
|
||||
执行PlayMontage And Wait for Event(GameplayTasks),播放Montage,
|
||||
如果在执行过程中发生了事件则会执行应用GameplayEffect事件。如果发出的Gameplay事件与传入的 EventTags 匹配,将使用标记和有效负载激活 EventReceived 执行引脚,然后调用 ApplyEffectContainer 函数。
|
||||
|
||||
GA_MeleeBase的EffectContainerMap会设置EventTag与GameplayEffect的map。PlayMontage And Wait for Event会根据接收到EventTag对目标对象赋予GameplayEffect.
|
||||
|
||||
这些EventTag是从Montage中的AnimNotify中赋值给WeaponActor,之后再调用WeaponActor的BeginAttack事件。
|
||||
### RPGtargetType类
|
||||
从武器类中得到的GameplayEventData数据中提取到目标的Actor指针。
|
||||
## 角色类与敌人类的实现
|
||||
|
||||
### 连击逻辑
|
||||
如果处于能施放能力状态下,再进行是否处于连击状态判断,之后选择激活武器能力或者跳转MontageSection。
|
||||
|
||||
个人觉得连击的逻辑与变量还是放在武器类中比较好。
|
||||
AnimNotiy里控制下一个MontageSection变量与偏移事件。相关的变量与计时在武器类中。
|
||||
|
||||
## GameMode与GameInstance逻辑
|
||||
GameMode编写控制游戏开始与结束的逻辑,对于Demo可以编写角色重生与死亡后的逻辑。
|
||||
|
||||
|
Reference in New Issue
Block a user