private void UsePowerup() { switch ((int)currentPowerup) { case 0: print("No power"); //Destroy(this.gameObject); break; case 1: //groundslam if (!_controller2D.collisions.below) { print("Used nr 1"); currentPowerup = GlobalState.PowerupType.None; powerupStateMachine.ChangeState(new DownDashState(_player2D, _dashSpeed, _dashTime)); PlayParticle(); } break; case 2: //zum print("Used nr 2"); currentPowerup = GlobalState.PowerupType.None; Time.timeScale = 0; PlayParticle(); int teleportAmount = (int)Random.Range(_teleportAmountMin, _teleportAmountMax); print("time to swap " + teleportAmount + " times"); for (int i = 0; i < _gameHandler.playerList.Count; i++) { _gameHandler.playerList[i].GetComponent <PlayerPowerupScript>().playerInput.PlayerControls.Disable(); StartCoroutine(_gameHandler.playerList[i].GetComponent <PlayerPowerupScript>().ZumBookTeleportShit(_gameHandler.playerList[(i + 1) % _gameHandler.playerList.Count].transform.position, _teleportTimeToWait, teleportAmount)); } break; case 3: //oof currentPowerup = GlobalState.PowerupType.None; print("Used nr 3"); StartCoroutine(this.gameObject.GetComponent <PlayerPowerupScript>().Oof()); PlayParticle(); break; case 4: //burger currentPowerup = GlobalState.PowerupType.None; print("Used nr 3"); StartCoroutine(this.gameObject.GetComponent <PlayerPowerupScript>().Burger()); PlayParticle(); break; } }
private void Awake() { currentPowerup = GlobalState.PowerupType.None; _gameHandler = GlobalState.state.GameHandler; if (playerInput == null) { playerInput = new PlayerInput(); } playerInput.PlayerControls.UsePowerup.performed += ctx => UsePowerup(); //_playerRB = GetComponent<Rigidbody2D>(); _player2D = GetComponent <Player2D>(); _controller2D = GetComponent <Controller2D>(); powerupStateMachine = new StateMachine <PlayerPowerupScript>(this); defaultState = new DefaultState(); powerupStateMachine.ChangeState(defaultState); }