private void Start() { _launched = true; _rigidbody2D.AddForce(LaunchVector); DelayCollisions(); if (_playSpawnSound) { AudioClipPlayer.PlayAudioAtLocation(soundSpawn, _transform.position, 0.5f); } }
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)); } }; }
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; } }
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)); }