public virtual float OnCauseDamage(AbstractPerson causeDamageTo, BasicDamage damage) { var realDamage = causeDamageTo.OnTakeDamage(this, damage); if (realDamage > 0) { onCauseDamage?.Invoke(causeDamageTo, Mathf.RoundToInt(realDamage)); } return(realDamage); // Debug.Log($"{CharacterName}对{causeDamageTo.CharacterName}造成{realDamage}伤害"); }
public virtual float OnTakeDamage(AbstractPerson takeDamageFrom, BasicDamage damage) { var finalDamage = Mathf.RoundToInt(damage.Damage); onTakeDamage?.Invoke(takeDamageFrom, finalDamage); Hp -= finalDamage; // Debug.Log($"{CharacterName}收到来自{takeDamageFrom.CharacterName}的{finalDamage}伤害,当前血量:{Hp}"); var realDamage = 0f; if (Hp <= 0) { realDamage = Hp; // Debug.Log(CharacterName+"该死!"); Hp = 0; LogicKill(); } else { realDamage = finalDamage; } return(realDamage); }