예제 #1
0
    private void OnTriggerEnter2D(Collider2D other)
    {
        switch (other.tag)
        {
        case "Player":
        {
            if (_player)
            {
                _player.UpdateScore();
                _audioSource.Play();

                if (CompareTag("Enemy"))
                {
                    _onEnemyDeath.SetTrigger("OnEnemyDeath");
                }
                else
                {
                    ExplosionVisual();
                }

                other.transform.GetComponent <Player>().Damage();
                Destroy(this.gameObject, 2.8f);
                Destroy(GetComponent <Collider2D>());
                Destroy(_rammingSpeedVisual.gameObject);
                _hackVisual.SetActive(false);

                if (!CompareTag("Enemy"))
                {
                    _enemyThruster[1].SetActive(false);
                }

                _enemyThruster[0].SetActive(false);
                _isAlive = false;
                _speed   = .5f;
                _spawnManager.AddEnemyDeathCount();
            }

            break;
        }

        case "Enemy":
        {
            Enemy enemy = other.GetComponentInParent <Enemy>();

            if (enemy.IsEnemyHacked() || _enemyHacked)
            {
                _player.UpdateScore();
                Destroy(this.gameObject, 2.8f);
                Destroy(GetComponent <Collider2D>());
                Destroy(_rammingSpeedVisual.gameObject);
                _hackVisual.SetActive(false);
                _audioSource.Play();

                if (CompareTag("Enemy"))
                {
                    _onEnemyDeath.SetTrigger("OnEnemyDeath");
                }
                else
                {
                    ExplosionVisual();
                }

                if (!CompareTag("Enemy"))
                {
                    _enemyThruster[1].SetActive(false);
                }

                _enemyThruster[0].SetActive(false);
                _isAlive = false;
                _speed   = .5f;
                _spawnManager.AddEnemyDeathCount();
            }
            break;
        }

        case "Player_Laser":
        {
            LaserDamage(other);
            break;
        }
        }
    }