核心思想
通过动画事件来设置一个flag,以此来判断是否可以进行连招。然后在PlayerManager的Update中不断获取这个值。
在AnimatorHandler中设置
public void EnableCombo()
{
anim.SetBool("CanDoCombo", true);
}
public void DisableCombo()
{
anim.SetBool("CanDoCombo", false);
}
连招判断及释放
在InputHandler中进行判断是否能使用连招
if (rb_Input)
{
if (playerManager.canDoCombo)
{
comboFlag = true;//防止无限触发连招动画
playerAttacker.HandleWeaponCombo(playerInventory.rightWeapon);
comboFlag = false;
}
else
{
if (playerManager.isInteracting) return;//防止无限触发攻击动画。
//if (playerManager.canDoCombo) return;
playerAttacker.HandleLigthAttack(playerInventory.rightWeapon);
}
}
在PlayerAttacker里面进行实际的连招释放
public void HandleWeaponCombo(WeaponItem weapon)
{
if (inputHandler.comboFlag)
{
animatorHandler.anim.SetBool("CanDoCombo", false);//为了防止无限释放连招
if (lastAttack == weapon.OH_Light_Attack_1)
{
animatorHandler.PlayTargetAnimation(weapon.OH_Light_Attack_2, true);
}
}
}
更好的方式不是一直用字符串,而是给一个List,后续我会进行改进的。