Exemplo n.º 1
0
    private void OnTriggerEnter(Collider other)
    {
        if (!other.gameObject.CompareTag("Player"))
        {
            return;
        }
        switch (_type)
        {
        case PowerUpManager.PowerUp.Type.BoostFwd:
            _audioManager.Play("BoostFwd");
            if (!_playerScript.IsAddingLosingLife &&
                !_playerScript.IsRespawning &&
                !_camAnim.GetCurrentAnimatorStateInfo(0)
                .IsName("ExplosionAnimation"))
            {
                _camAnim.CrossFadeInFixedTime("BoostFwdAnimation", 0.18f);
            }
            _playerScript.IsBoosted  = true;
            _playerScript.IsFwdBoost = true;
            break;

        case PowerUpManager.PowerUp.Type.BoostBack:
            _audioManager.Play("BoostBack");
            if (!_playerScript.IsAddingLosingLife &&
                !_playerScript.IsRespawning &&
                !_camAnim.GetCurrentAnimatorStateInfo(0)
                .IsName("ExplosionAnimation"))
            {
                _camAnim.CrossFadeInFixedTime("BoostBackAnimation", 0.18f);
            }

            _playerScript.IsBoosted  = true;
            _playerScript.IsFwdBoost = false;
            break;

        case PowerUpManager.PowerUp.Type.Destruction:
            _audioManager.Play("Destruction");
            if (!_camAnim.GetCurrentAnimatorStateInfo(0)
                .IsName("ExplosionAnimation"))
            {
                _camAnim.CrossFadeInFixedTime("DestructionAnimation",
                                              0.18f);
            }

            _playerScript.IsDestructive = true;
            _anim.Play("IdleDestructionStart");
            if (!_playerScript.IsAboutToExplode &&
                !_playerScript.IsExploding)
            {
                _parentAnim.Play(
                    "PlayerParentIdleAnimationWithDestruction");
            }

            _destructionBarAnim.Play("Turn On");
            _timer.ZeroDestruction();
            break;

        case PowerUpManager.PowerUp.Type.Magnet:
            _audioManager.Play("Magnetism");
            if (!_camAnim.GetCurrentAnimatorStateInfo(0)
                .IsName("ExplosionAnimation"))
            {
                _camAnim.CrossFadeInFixedTime("MagnetismAnimation", 0.18f);
            }

            _playerMagnetLightAnim.Play("MagnetismPlayerLightTurnOn");
            _playerScript.IsMagnetising = true;
            _magnetismParticles.Play(true);
            _magnetismBarAnim.Play("Turn On");
            _timer.ZeroMagnet();
            break;

        case PowerUpManager.PowerUp.Type.Projectiles:
            _audioManager.Play("Projectiles");
            if (!_camAnim.GetCurrentAnimatorStateInfo(0)
                .IsName("ExplosionAnimation"))
            {
                _camAnim.CrossFadeInFixedTime("ProjectilesAnimation",
                                              0.18f);
            }

            _playerScript.IsProjectiles = true;
            _projectiles.Play(true);
            _projectilesBarAnim.Play("Turn On");
            _timer.ZeroProjectiles();
            break;

        case PowerUpManager.PowerUp.Type.Explosion:
            _audioManager.Play("Explosion");
            _camAnim.CrossFadeInFixedTime("ExplosionAnimation", 0.18f);
            _parentAnim.Play("PlayerParentAboutToExplodeAnimation", -1, 0f);
            _playerScript.IsAboutToExplode = true;
//                _projectiles.Play(true);
            _explosionBarAnim.Play("Turn On");
            _timer.ZeroExplosion();
            break;

        case PowerUpManager.PowerUp.Type.ExtraLife:
            _audioManager.Play("AddLife");
            _gameManager.AddLife();
            if (!_camAnim.GetCurrentAnimatorStateInfo(0)
                .IsName("ExplosionAnimation"))
            {
                _camAnim.CrossFadeInFixedTime("AddLifeAnimation", 0.18f);
            }

            if (!_playerScript.IsAboutToExplode &&
                !_playerScript.IsExploding)
            {
                _parentAnim.Play("AddLifeAnimation");
            }

            break;

        case PowerUpManager.PowerUp.Type.Slowdown:
            _audioManager.Play("Slowdown");
            if (!_camAnim.GetCurrentAnimatorStateInfo(0)
                .IsName("ExplosionAnimation"))
            {
                _camAnim.CrossFadeInFixedTime("SlowdownAnimation", 0.18f);
            }

            _gameManager.Slowdown();
            if (_platformManager.PlatformSpeed - SlowdownFactor >
                _platformManager.InitialPlatformSpeed)
            {
                _platformManager.SlowdownFactor += SlowdownFactor;
            }
            else
            {
                _platformManager.SlowdownFactor += 0.0f;
            }

            break;

        default:
            throw new ArgumentOutOfRangeException();
        }

        if (_hasVibrator)
        {
            Vibration.Vibrate(20);
        }
        for (var i = _powerUps.Count - 1; i >= 0; i--)
        {
            if (_powerUps[i]._object.GetComponent <Collider>() ==
                _collider)
            {
                _powerUps.RemoveAt(i);
            }
        }

        _playerScript.AddToScore(50f, false);
        Destroy(gameObject.transform.GetChild(0).gameObject);
        Destroy(gameObject);
    }