public override void Update() { // World collisions are set, do update here _isOverlappingOrange = false; _isOverlappingPink = false; if (!Body.IsFloored) { if (Body.Velocity.Y <= 0) { AnimationHandler.ChangeAnimation((int)AnimationStates.Rising); } else { AnimationHandler.ChangeAnimation((int)AnimationStates.Falling); } } foreach (Hitbox collision in Body.CurrentCollisions) { if (collision.Data.Value == "orange") { _isOverlappingOrange = true; } if (collision.Data.Value == "purple") { _isOverlappingPink = true; } } // Take keyboard input HandleKeyboard(); }
private void HandleKeyboard() { KeyboardState state = Keyboard.GetState(); _inputLeft = state.IsKeyDown(Keys.A); _inputRight = state.IsKeyDown(Keys.D); _inputJump = state.IsKeyDown(Keys.Space); _inputAction1 = state.IsKeyDown(Keys.J); if (_inputLeft && !_inputRight) { Body.Velocity.X = -_walkSpeed; AnimationHandler.Facing = PlayerOrientation.Left; if (Body.IsFloored) { AnimationHandler.ChangeAnimation((int)AnimationStates.Walking); } } if (_inputRight && !_inputLeft) { Body.Velocity.X = _walkSpeed; AnimationHandler.Facing = PlayerOrientation.Right; if (Body.IsFloored) { AnimationHandler.ChangeAnimation((int)AnimationStates.Walking); } } if (!_inputRight && !_inputLeft) { Body.Velocity.X = 0; if (Body.IsFloored) { AnimationHandler.ChangeAnimation((int)AnimationStates.Idle); } } if (_inputRight && _inputLeft) { Body.Velocity.X = 0; if (Body.IsFloored) { AnimationHandler.ChangeAnimation((int)AnimationStates.Idle); } } if (state.IsKeyDown(Keys.Space) && _oldKeyState.IsKeyUp(Keys.Space)) { Body.Velocity.Y = -_jumpStrength; } if (_inputAction1) { //Game.World.AddHitbox(CollisionHandler.Body, new Vector2(10, 10), new Vector2(50, 50), "purple", CollisionType.invoker, "purple"); } _oldKeyState = state; }
public Player(Vector2 setPosition) { _font = Game.Assets.Load <SpriteFont>("font"); _sprite = Game.Assets.Load <Texture2D>("red"); Body = Game.Rooms.CurrentRoom.World.AddBody(this, setPosition, _size); Body.AddChildHitbox(0, new Vector2(0, 0), _size); AnimationHandler = new AnimationHandler(this); Position = setPosition; AnimationHandler.AddAnimation( (int)AnimationStates.Idle, new Animation(new Rectangle(0, 0, 152, 152), _size) { SpriteSheet = Game.Assets.Load <Texture2D>("suika_idle_padded"), FrameCount = 18, FrameDelay = 6, }); AnimationHandler.AddAnimation( (int)AnimationStates.Walking, new Animation(new Rectangle(0, 0, 96, 96), _size) { SpriteSheet = Game.Assets.Load <Texture2D>("suika_walk"), FrameCount = 8, FrameDelay = 4 }); AnimationHandler.AddAnimation( (int)AnimationStates.Falling, new Animation(new Rectangle(0, 0, 126, 102), _size) { SpriteSheet = Game.Assets.Load <Texture2D>("suika_fall"), FrameCount = 3, FrameDelay = 6, LoopIndex = 1 }); AnimationHandler.AddAnimation( (int)AnimationStates.Rising, new Animation(new Rectangle(0, 0, 110, 110), _size) { SpriteSheet = Game.Assets.Load <Texture2D>("suika_rise"), Offset = new Vector2(48, 53), FrameCount = 2, FrameDelay = 4, Loop = false }); AnimationHandler.ChangeAnimation((int)AnimationStates.Idle); AnimationHandler.Facing = PlayerOrientation.Right; }