Exemple #1
0
    private void EnableSuperMode()
    {
        _equippedWeapons[0].FireCooldown = 0.5f;
        _equippedWeapons[1].FireCooldown = 0.75f;
        _equippedWeapons[1].gameObject.SetActive(true);

        _healthDisplay.AddHealth();
        _healthDisplay.AddHealth();

        _pyre.AddFuel(false);

        var   enemies      = ActorChoreographer.Instance.Enemies.ToArray();
        Enemy closestEnemy = null;
        var   minDistance  = Mathf.Infinity;

        enemies.ForEach(
            x =>
        {
            if (!x.enabled)
            {
                return;
            }
            var impactDir = x.transform.position - transform.position;
            x.DoImpact(impactDir.normalized * 20f);
            x.TakeDamage(RandomProvider.Instance.Random.Next(0, 2));

            var distance = Vector2.Distance(x.transform.position, transform.position);
            if (minDistance > distance)
            {
                closestEnemy = x;
                minDistance  = distance;
            }
        });

        if (closestEnemy != null)
        {
            ScoreDisplay.Instance.AddScore(100, enemies.Length, "- SLAYER", closestEnemy.transform.position);
        }

        _superEffects.gameObject.SetActive(true);

        _acceleration = 80f;
        _maxVelocity  = 5f;

        AudioPlayer.Instance.PlayOneShot(AudioPlayer.Instance.Powerup, 0.10f);

        Invoke(nameof(DisableSuperMode), 8.5f);
    }
 public void HealthUp()
 {
     if (health < 3)
     {
         healthDisplay.AddHealth();
         health++;
         agent.AddReward(0.1f);
         healthSound.Play();
     }
 }