public MovementTest() { graphics = new GraphicsDeviceManager(this); graphics.PreferredBackBufferWidth = 1024; graphics.PreferredBackBufferHeight = 768; graphics.ApplyChanges(); _inputState = new InputState(); Content.RootDirectory = "Content"; }
/// <summary> /// Set speed and direction of player based on their input. /// TODO: Implement variable speed. /// </summary> /// <param name="inputState">Current state of all controllers.</param> /// <param name="index">PlayerIndex of Player to respond to input from.</param> public void UpdateMovement(InputState inputState, PlayerIndex index) { if (CurrentState != State.Dead) { _speed = Vector2.Zero; _direction = Vector2.Zero; if (inputState.IsUpHeld(index)) { _speed.Y = MovementSpeed; _direction.Y = (float)Move.Up; Facing = Face.Up; } else if (inputState.IsDownHeld(index)) { _speed.Y = MovementSpeed; _direction.Y = (float)Move.Down; Facing = Face.Down; } if (inputState.IsLeftHeld(index)) { _speed.X = MovementSpeed; _direction.X = (float)Move.Left; Facing = Face.Left; } else if (inputState.IsRightHeld(index)) { _speed.X = MovementSpeed; _direction.X = (float)Move.Right; Facing = Face.Right; } } }
/// <summary> /// Responds to a Player's input and checks for collisions. /// </summary> /// <param name="inputState">Current state of all controllers.</param> /// <param name="index">PlayerIndex of Player to respond to input from.</param> /// <param name="bounds">Rectangle containing the bounds of the box to check for collisions with.</param> /// <param name="blocks">An arr of <see cref="Obstacle"/>s to check for collisions with.</param> public void HandleInput(InputState inputState, PlayerIndex index, Rectangle bounds, Obstacle[] blocks) { UpdateMovement(inputState, index); CheckBounds(bounds); CheckCollisions(bounds, blocks); }