public void TakeDamageOverTime(int damage, AttackEffect.DamageSource damageSource, Spell source) { if (!damageOverTimeSpellsInEffect.Contains(source)) { damageOverTimeSpellsInEffect.Add(source); GetHit(damage, 0f, Vector3.zero, damageSource); StartCoroutine(RemoveDamageOverTimeSource(source)); } }
public void GetHit(int damage, float knockBackForce, Vector3 knockBackDirection, AttackEffect.DamageSource damageSource = AttackEffect.DamageSource.Physical) { if (!isInvulnerable) { HP -= damage; Vector3 knockBackTo = (transform.position - knockBackDirection + Vector3.up * 0.5f).normalized * knockBackForce; knockBackTo.z = 0; rb.AddForce(knockBackTo, ForceMode.Impulse); CancelInvoke("ResetVelocity"); Invoke("ResetVelocity", 0.3f); StartCoroutine("AnimateHurt"); } }