public void TakeDamage(float damage, bool bLastHit = false, float knockBackDis = 0f, float knockBackDur = 0f, EKnockBackDirection knockBackDirection = EKnockBackDirection.BACKWARD) { if (movement.IsGuard) { bool bStunned = movement.MinusGuardEnergy(damage); Vector3 newPos = transform.position + (transform.position - targetPlayer.transform.position).normalized * knockBackDis / (bStunned ? .5f : 2f); ControllerMove(newPos, knockBackDur); return; } currentHealth -= damage; if (anim != null) { anim.SetTrigger(bLastHit ? "Revive" : "Hurt"); } if (knockBackDis != 0f) { anim.applyRootMotion = false; Vector3 direction = Vector3.zero; if (knockBackDirection == EKnockBackDirection.BACKWARD) { direction = (transform.position - targetPlayer.transform.position).normalized; } else if (knockBackDirection == EKnockBackDirection.UP) { direction = Vector3.up; } else if (knockBackDirection == EKnockBackDirection.OBLIQUE) { direction = ((transform.position - targetPlayer.transform.position).normalized + Vector3.up).normalized; } Vector3 newPos = transform.position + direction * knockBackDis; ControllerMove(newPos, knockBackDur); } }
public AttackInfo(string boneName, float radius, float damage, float knockBackDis, float knockBackDur, EKnockBackDirection direction) { this.BoneName = boneName; this.Radius = radius; this.Damage = damage; this.KnockBackDis = knockBackDis; this.KnockBackDur = knockBackDur; this.Direction = direction; }