public void Update(GameTime gameTime) { //Physics updates first Position += Velocity; _colRect.X = (int)Position.X; _colRect.Y = (int)Position.Y; CollisionRectangle = _colRect; render.Update(gameTime, entityState); Velocity = inputReader.ReadInput(); Velocity *= 4; if (Velocity == Vector2.Zero) { entityState = Enums.EntityState.idle; } else { entityState = Enums.EntityState.walking; if (Velocity.Y != 0) { entityState = Enums.EntityState.jumping; } } Velocity = new Vector2(Velocity.X, Velocity.Y + 4); //If jumping, we need to boost our velocity if (entityState == Enums.EntityState.jumping && canJump) { Velocity = new Vector2(Velocity.X, Velocity.Y - 15); //canJump = false; //maakte een bug, dus floaty } }
public Player(IInputReader inputReader) { this.inputReader = inputReader; render = new RenderComponent("playerWalk", "playerJump", "player", 30, 11); entityState = Enums.EntityState.idle; Health = 1; canJump = true; var dimensions = render.GetDimensions(); this.CollisionRectangle = new Rectangle((int)Position.X, (int)Position.Y, (int)dimensions.X, (int)dimensions.Y); _colRect = CollisionRectangle; }
public void Update(GameTime gameTime, Enums.EntityState state) { if (fps == 0 || state != Enums.EntityState.walking) { destRect.X = 0; //just to be safe } if (timeSinceLastFrameChange > frameTime) { destRect.X += widthPerFrame; if (destRect.X >= spriteSheet.Width) { destRect.X = 0; } timeSinceLastFrameChange = 0.0; } timeSinceLastFrameChange += gameTime.ElapsedGameTime.TotalSeconds; }
public void Draw(Vector2 position, Enums.EntityState state, bool isFlipped = false) { switch (state) { case Enums.EntityState.walking: { if (isFlipped) { Globals.SpriteBatch.Draw(spriteSheet, position, destRect, Color.White, 0.0f, Vector2.Zero, 1.0f, SpriteEffects.FlipHorizontally, 1.0f);; } else { Globals.SpriteBatch.Draw(spriteSheet, position, destRect, Color.White); } break; } case Enums.EntityState.jumping: Globals.SpriteBatch.Draw(jumpFrame, position, Color.White); break; default: if (isFlipped) { Rectangle rect = new Rectangle(0, 0, idleFrame.Width, idleFrame.Height); Globals.SpriteBatch.Draw(idleFrame, position, rect, Color.White, 0.0f, Vector2.Zero, 1.0f, SpriteEffects.FlipHorizontally, 1.0f); } else { Globals.SpriteBatch.Draw(idleFrame, position, Color.White); } break; } }