IPlayerState IPlayerState.Update(PlayerMovementRB player) { if (player.controlState == ControlState.CONTROLLABLE) { if (player.directionVector.sqrMagnitude != 0) { return player.statePool.GetState("MOVING"); } else if (Input.GetButtonDown(player.jumpButton)) { return player.statePool.GetState("JUMPING"); } else if (Input.GetButtonDown(player.interactButton)) { player.Interact(); } else if (Input.GetButtonDown(player.crouchButton)) { return player.statePool.GetState("CROUCHING"); } } if (!player.grounded) { return player.statePool.GetState("FALLING"); } // TODO: if( crouch is pressed) { return new PlayerStateCrouching(); } return this; }
IPlayerState IPlayerState.Update(PlayerMovementRB player) { // Check if the player jumped BEFORE we check if they aren't grounded // so if both happen in the same frame they can still jump if (Input.GetButtonDown(player.jumpButton)) { return player.statePool.GetState("JUMPING"); } else if (!player.grounded) { return player.statePool.GetState("FALLING"); } else if (Input.GetButtonDown(player.interactButton)) { player.Interact(); } else if (Input.GetButtonDown(player.crouchButton)) { return player.statePool.GetState("CRAWLING"); } // Set animator speed and then if not moving go to Idle state player.anim.SetFloat("Speed", player.currentSpeed); if (player.directionVector.sqrMagnitude == 0) { return player.statePool.GetState("IDLE"); } return this; }
IPlayerState IPlayerState.Update(PlayerMovementRB player) { if (player.rb.velocity.y < 0) { return player.statePool.GetState("FALLING"); } else if (player.grounded) { return player.statePool.GetState("IDLE"); } else if(player.carryState == CarryState.CARRYING && Input.GetButtonDown(player.interactButton)) { player.Interact(); } return this; }