2023-06-29 11:55:02 +08:00

58 lines
3.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## 受击系统
### 相关属性
- 韧性:通过穿戴装备(功法)从而获取的一种属性。在该属性>0时角色不容易出现硬直属性<=0时容易出现硬直。
- 削韧:武器附带的一种属性。在武器攻击到目标后,会削减目标的韧性。
黑魂还存在以下属性,以此对不同武器对应不同类型怪物的产生硬直关系进行更加精准的控制,暂不考虑属性:
- 强韧度怪物抵抗硬直产生能力的等级。分为等级0~3。最高等级应该为`冲击力最高等级-1`。该属性的设计目的是为了保证高攻速的轻武器无法打出中重硬直。
- 冲击力武器能够造成硬直的能力等级。分为等级0~4分别对应不同的空手、轻武器、重武器、巨大武器。黑魂中一共13的等级其中最高等级指代强制打出硬直、击倒、击飞
但如果考虑到越阶打怪,比如`筑基打金丹`,那使用冲击力系统,`冲击力-1`即可,光使用韧性比较难。
### 运行规则
黑魂的硬直产生使用`冲击力等级-强韧度等级`进行判断(如果韧性打空强韧度-1
- `=`0产生小硬直
- `>`0产生中硬直
- `>`1产生大硬直
我们对此进行简化,在受到攻击后:
- 角色韧性>100不会出现硬直。
- 0<角色韧性<100产生小硬直
- -100<角色韧性<0产生中硬直
- 角色韧性<-100产生大硬直
产生硬直后角色就会恢复所有韧性如果产生了大硬直就可以进行`处决`
## 受击状态
产生硬直会播放对应的动画并且打断当前动作攻击施法互动动作除此之外
- 小硬直人形生物可使用翻滚等移动技能强制解除该硬直怪物摇晃一下
- 中硬直人形生物可使用一些强行受身技能强制解除该硬直怪物摔倒
- 大硬直人形生物无法使用技能解除硬直怪物长时间瘫痪
特殊受击状态会得到`易伤debuffer`根据类型
- 击飞可追加空中追击技能持续浮空落地后会有落地保护。(PVP需要
- 击倒持续时间比中硬直长
## 其他说明
### 武技与蓄力攻击
在黑魂中武技与蓄力攻击都给附带临时的冲击力提升
我们对此进行简化为附带临时的削韧提升
### 霸体
黑魂中的霸体是直接提高强韧度等级来实现的
对此我们简化为直接提升临时的韧性
## GAS实现
- 添加Debuffer.ReduceTough标签与GEGE中Tough的计算使用GameplayEffectExecutionCalculation考虑到功法武器对其的影响
- 添加一个名为RecoverTough的GE使用OriginTough属性来overrideCurrentTough
- 修改Status.Stiffness标签分为成Status.Stiffness.ActionUnderAttackAttacked3种硬直硬直大小使用等级表示0代表无硬直1代表小硬直2代表中硬直3代表大硬直。(做这步时最好git Commit因为修改标签会知道一些Asset引用失效这些标签主要引用在连击GA受击GA硬直GE
目前有2种实现当角色Tough削减至一定数目后给角色添加硬直Debuffer
### 属性集PostGameplayEffectExecute()实现
在PostGameplayEffectExecute()中对Tough进行监视在函数中写编写判断公式当符合条件时对角色应用对应等级硬直GE同时在动画蓝图通过监视GameplayTag函数UAsyncTaskGameplayTagAddedRemoved来设置变量以起到播放动画的目的
### 使用GA实现
因为受击系统主要逻辑都写在GA中所以将硬直逻辑写在GA里或许会更好
在GA激活时使用AsyncTaskAttributeChanged可能再做个AbilityTasks会比较好来监视Tough属性的变化如果达到指定情况就应用对应的硬直GE同时在动画蓝图通过监视GameplayTag函数UAsyncTaskGameplayTagAddedRemoved来设置变量以起到播放动画的目的