/// <summary> /// Handles input, performs physics, and animates the player sprite. /// </summary> /// <remarks> /// We pass in all of the input states so that our game is only polling the hardware /// once per frame. We also pass the game's orientation because when using the accelerometer, /// we need to reverse our motion when the orientation is in the LandscapeRight orientation. /// </remarks> public void Update( GameTime gameTime, KeyboardState keyboardState, GamePadState gamePadState, AccelerometerState accelState, DisplayOrientation orientation) { if (!_loadingContent.IsCompleted) { return; } GetInput(keyboardState, gamePadState, accelState, orientation); ApplyPhysics(gameTime); if (IsAlive /* && IsOnGround */) { if (Math.Abs(Velocity.X) - 0.02f > 0) { sprite.PlayAnimation(runAnimation); } else { sprite.PlayAnimation(idleAnimation); } } // Clear input. movement = 0.0f; isJumping = false; }
/// <summary> /// Gets player horizontal movement and jump commands from input. /// </summary> private void GetInput( KeyboardState keyboardState, GamePadState gamePadState, AccelerometerState accelState, DisplayOrientation orientation) { // Get analog horizontal movement. //movement = gamePadState.ThumbSticks.Left.X * MoveStickScale; // Ignore small movements to prevent running in place. if (Math.Abs(movement) < 0.5f) { movement = 0.0f; } // Move the player with accelerometer //if (Math.Abs(accelState.Acceleration.Y) > 0.10f) //{ // // set our movement speed // movement = MathHelper.Clamp(-accelState.Acceleration.Y * AccelerometerScale, -1f, 1f); // // if we're in the LandscapeLeft orientation, we must reverse our movement // if (orientation == DisplayOrientation.LandscapeRight) // movement = -movement; //} // If any digital horizontal movement input is found, override the analog movement. if (/* gamePadState.IsButtonDown(Buttons.DPadLeft) || */ keyboardState.IsKeyDown(Keys.Left) || keyboardState.IsKeyDown(Keys.A)) { movement = -1.0f; } else if (/* gamePadState.IsButtonDown(Buttons.DPadRight) || */ keyboardState.IsKeyDown(Keys.Right) || keyboardState.IsKeyDown(Keys.D)) { movement = 1.0f; } // Check if the player wants to jump. isJumping = /* gamePadState.IsButtonDown(JumpButton) || */ keyboardState.IsKeyDown(Keys.Space) || keyboardState.IsKeyDown(Keys.Up) || keyboardState.IsKeyDown(Keys.W); }