protected virtual void Effect() { if (Impluse > 0) { Caster.AddForce(Caster.GetForward() * Impluse); } }
private void OnTakeDamage(ref float damage, GameObject damageSource, bool canBlock, bool canParry) { if (canBlock) { if (isImmortal) { damage = 0; } else if (isParrying) { FacePosition(damageSource.transform.position); damage = 0; if (canParry) { Character_Base sourceCharacter = damageSource.GetComponent <Character_Base>(); sourceCharacter.GetParried(); sourceCharacter.AddForce(GetForward()); } EffectManager.instance.CreateEffectByIndex(transform.position + GetForward() * 0.6f + Vector3.up * 0.5f, 4, 1); } else if (isDefending) { FacePosition(damageSource.transform.position); damage *= 0.3f; attribute.ReduceStance(damage * 1f); AddForce(GetForward() * -1f); EffectManager.instance.CreateEffectByIndex(transform.position + GetForward() * 0.6f + Vector3.up * 0.5f, 0, 1); } else { attribute.ReduceStance(damage * 1f); StartAction(stunActionPrefab); EffectManager.instance.CreateEffectByIndex(transform.position + Vector3.up * 0.5f, 2, 1, IsFacingRight); } } else { attribute.ReduceStance(damage * 0.3f); AddForce(GetForward() * -1f); EffectManager.instance.CreateEffectByIndex(transform.position + Vector3.up * 0.5f, 2, 1, IsFacingRight); } }