Ejemplo n.º 1
0
    public static void BlockAttack(
        AttackIndictator attackIndicator, BlockConfig block,
        int damage, Vector3 contactPoint, out DefenceFeedback feedback)
    {
        Vector3 contactDirection = contactPoint - attackIndicator.transform.position;
        float   angle            = Vector3.Angle(contactDirection, attackIndicator.blockIndicator.transform.forward);

        if (angle <= block.blockAngle)
        {
            attackIndicator.SetLastHit(contactDirection.normalized, true);

            feedback = new DefenceFeedback(
                true, block.ricochet,
                Mathf.RoundToInt(damage * block.damageReduction),
                block.poise);
        }
        else
        {
            attackIndicator.SetLastHit(contactDirection.normalized, false);

            feedback = DefenceFeedback.NoDefence;
        }
    }
Ejemplo n.º 2
0
 public void OnAttacked(int damage, Vector3 contactPoint, CharacterComponents character, out DefenceFeedback feedback)
 {
     BlockAbility.BlockAttack(characterComponents.attackIndicator,
                              blockConfig, damage, contactPoint, out feedback);
 }