人物状态

目前,人物分为如下几个状态

  • 基态(Idle_Walk)
    • 静息状态(Idle)
    • 走路状态(Walk)
  • 互斥态
    • 翻滚(Roll)
    • 攻击(Attack)
      • At0
      • At1
      • At2
    • 防御(Defend)
      • 防御基态(DefendIdle)
      • 弹反(Rebound)
      • 大击退(HardDefend)
  • 特殊态
    • 死亡(Die)
    • 受击态(Disturb)
    • 硬直态(Pause)

关于基态:

基态是人物的基准状态,所有互斥态动作都必须从基态发出,同时所有互斥态动作执行完必须返回基态。同时,若无特殊声明,人物的方向也仅允许从基态调整。

整个基态用混合树实现,节点名为Idle_Walk

Idle:

人物的静息状态,采用int direction控制方向(0:左边;1:右边)【注:所有混合树皆由此变量控制动画方向】

当float velocity>0.5时转换为Walk态

Walk:

人物走路状态

当float velocity<=0.5时转换为Idle态

关于互斥态:

互斥态内部所有行为若无特殊说明,则必须从基态执行,在执行时不可转换为其他互斥态行为。执行完毕后必须返回基态。

Roll:

翻滚状态,人物会滚动一段距离

当触发翻滚后,程序会搜集当前外界输入的方向向量。当确定外界输入的横坐标值与当前人物朝向一致(若不一致,改变人物朝向值),则触发翻滚并将方向向量传入RollBehavior动作脚本中。

在翻滚时,人物不受外界人物攻击,但会受环境攻击。

Attack:

Attack暂仅限于普通攻击

这里实现Attack三连击。在每个Attack动作中,采用插入事件帧的方式处理对敌造成伤害。

当每个Attack子阶段进入后50%时接到下一个攻击指令才会触发为下一段攻击。每段攻击分别计算范围与伤害

Defend:

Defend可以抵御来自正面的攻击

按下Defend键时,人物会转为Defend态,直到松开Defend键【Defend键默认鼠标右键】。当人物保持防御是,会处于防御基态中。

Defend可以防御敌人所有可防御的攻击。

当刚按下Defend键不到ReboundTime时间内,如果受到攻击则会转为弹反阶段。弹反可以对敌人近身攻击造成一点微小的伤害与较大的韧性打击,而对于远程攻击则可以偏移子弹方向。弹反触发完会返回基态。弹反不会在敌人持续性攻击(如激光)时触发。

当玩家处于Defend非Rebound状态时,如果收到一个较大的攻击,则会转为HardDefend态。此状态玩家不受外界人物攻击,但会强制背攻击来源的方向后退一段距离。

关于特殊态:

特殊态可以在除特殊态中的任意时刻立即触发。

Die:

死亡具有特殊态中的最高优先级。当生命值为0时,会立刻进入死亡状态。当死亡状态结束后,会销毁物体

Disturb:

当受到攻击时会短暂进入受击态中(受击态持续时间理应小于普通攻击的间隔)。在受击态中人物会短暂不受外界人物攻击,但会倒退一个微小的距离。当变量canDisturb == false时,或正处于其他特殊态时,不会进入受击态。

Pause:

当角色短时间内受到大量伤害,具体表现为tenacity <= 0时会进入硬直态。硬直态中角色会被击飞(倒退一个较大的距离)并进入硬直动画。硬直态玩家不可做出其他操作,并会受到伤害。硬直态推出时,tenacity会回满。

最后修改日期:2019年8月8日

作者

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。