Exemplo n.º 1
0
    private void AttackTarget(PlayerController targetPlayer)
    {
        if (!targetPlayer)
        {
            return;
        }
        if (!movement)
        {
            return;
        }

        attackTimer -= Time.deltaTime;
        if (attackTimer <= 0f)
        {
            movement.Attack(() =>
            {
                if (Stats.IsDead || !Target || !targetPlayer)
                {
                    Target = null;
                    return;
                }

                var damage = GameMath.CalculateMeleeDamage(this, targetPlayer);
                if (targetPlayer.TakeDamage(this, (int)damage))
                {
                    Target = null;
                }
            });

            attackTimer = attackInterval;
        }
    }
    private void Attack()
    {
        attackTimer = attackInterval;
        var damage = GameMath.CalculateMeleeDamage(enemyController, target);

        if (animator)
        {
            animator.SetInteger("AttackType", Random.Range(0, 4));
            animator.SetTrigger("AttackTrigger");
        }

        target.TakeDamage(enemyController, (int)damage);
    }