Exemplo n.º 1
0
 private void Start()
 {
     _launched = true;
     _rigidbody2D.AddForce(LaunchVector);
     DelayCollisions();
     if (_playSpawnSound)
     {
         AudioClipPlayer.PlayAudioAtLocation(soundSpawn, _transform.position, 0.5f);
     }
 }
Exemplo n.º 2
0
 private void Awake()
 {
     _camera                    = Camera.main;
     _rigidbody                 = GetComponent <Rigidbody2D>();
     _playerHealth              = GetComponent <IHealthSystem>();
     _playerHealth.OnWaveDeath += playerHealth =>
     {
         AudioClipPlayer.PlayAudioAtLocation(deathClip, transform.position);
         if (playerHealth.IsPermaDead)
         {
             StartCoroutine(nameof(SlowAndDeath));
         }
     };
 }
Exemplo n.º 3
0
    private void OnTriggerEnter2D(Collider2D other)
    {
        string otherColliderTag = other.gameObject.tag;

        if ("Wall" == otherColliderTag)
        {
            Destroy(gameObject);
            AudioClipPlayer.PlayAudioAtLocation(soundWall, _transform.position, 0.5f);
            return;
        }

        if (_isDisabled)
        {
            return;
        }

        switch (otherColliderTag)
        {
        case "Player":
        case "Enemy":
            IHealthSystem otherHealthSystem = other.GetComponent <IHealthSystem>();
            otherHealthSystem.DealDamage(damage);
            Destroy(gameObject);
            AudioClipPlayer.PlayAudioAtLocation(soundDamage, _transform.position);
            break;

        case "Mirror" when canBeDeflected:
            Transform mirrorTransform = other.transform;
            if (IsProjectileCollidingWithFrontOfMirror(mirrorTransform, _transform.position))
            {
                Vector2 reflectionVector = Vector2.Reflect(transform.right, mirrorTransform.right);
                _transform.right      = reflectionVector.normalized;
                _rigidbody2D.velocity = Vector2.zero;
                _rigidbody2D.AddForce(LaunchVector);
                DelayCollisions();
                AudioClipPlayer.PlayAudioAtLocation(soundReflection, _transform.position, 0.5f);
            }
            break;
        }
    }
Exemplo n.º 4
0
    private IEnumerator LoadNextWave()
    {
        AudioClipPlayer.PlayAudioAtLocation(waveDeathClip, transform.position);
        foreach (GameObject projectile in GameObject.FindGameObjectsWithTag("Projectile"))
        {
            Destroy(projectile);
        }

        yield return(new WaitForEndOfFrame());

        print("Freezing Time");
        Time.timeScale = 0;


        if (_waveCounter < gameObjectsToDisableOnEachWaveEnd.Count)
        {
            GameObject     shellToFade         = gameObjectsToDisableOnEachWaveEnd[_waveCounter];
            SpriteRenderer shellSpriteRenderer = shellToFade.GetComponent <SpriteRenderer>();
            Color          color = shellSpriteRenderer.color;

            for (float alpha = 1; alpha >= 0; alpha -= 0.05f)
            {
                shellSpriteRenderer.color = new Color(color.r, color.g, color.b, alpha);
                yield return(new WaitForSecondsRealtime(0.1f));
            }

            shellToFade.SetActive(false);
        }
        _waveCounter++;


        yield return(new WaitForSecondsRealtime(0.25f));

        print("Resuming time");
        Time.timeScale = 1f;
        ScheduleCurrentWaveAttackPatterns();
        StopCoroutine(nameof(LoadNextWave));
    }