예제 #1
0
 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);
     }
 }