public void Draw(int x, int y, SpriteBatch g, EntitySpriteSheet sheet, float SpriteDepth) { if (CurXSpeed > 0) { FaceingLeft = false; } if (CurXSpeed < 0) { FaceingLeft = true; } g.Draw(sheet.Sheet, new Rectangle(x, y, SpriteSheet.SpriteSize, SpriteSheet.SpriteSize * 2), sheet.GetSprite(ID), Color.White, 0, new Vector2(0, 0), FaceingLeft ? SpriteEffects.None : SpriteEffects.FlipHorizontally, SpriteDepth); }
public override void Update() { if (!Visible) { return; } if (!IsStatic) { if (IsAffectedByGravity) { if (IsJumping) { Velocity += 5; } else { Velocity = 0; } Y = Y + Velocity; IsJumping = true; } if (IsMoving) { if (Facing == Direction.RIGHT) { X = X + Acceleration; this.sprite.TextureRect = EntitySpriteSheet.GetNextSprite(Direction.RIGHT); } if (Facing == Direction.LEFT) { if (!AllowOffscreen) { if (X > 0) { X = X + Acceleration; } } else { X = X + Acceleration; } this.sprite.TextureRect = EntitySpriteSheet.GetNextSprite(Direction.LEFT); } } if (!IsMoving) { if (Facing == Direction.NONE) { this.sprite.TextureRect = EntitySpriteSheet.GetFirstSprite(Direction.NONE); } if (Facing == Direction.RIGHT) { this.sprite.TextureRect = EntitySpriteSheet.GetFirstSprite(Direction.RIGHT); } if (Facing == Direction.LEFT) { this.sprite.TextureRect = EntitySpriteSheet.GetFirstSprite(Direction.LEFT); } } if (Velocity != 0 && Facing == Direction.RIGHT) { this.sprite.TextureRect = EntitySpriteSheet.GetFirstSprite(Direction.JUMPRIGHT); } if (Velocity != 0 && Facing == Direction.LEFT) { this.sprite.TextureRect = EntitySpriteSheet.GetFirstSprite(Direction.JUMPLEFT); } } else { if (this.AutoCycleStaticSpriteSheet && this.entitySpriteSheet.TotalFrames > 1) { this.sprite.TextureRect = EntitySpriteSheet.GetNextSprite(Direction.NONE); } Viewport v = _gameObject.SceneManager.CurrentScene.viewPort; ScreenLocation sl = v.TileToScreen(this.OriginTileRow, this.OriginTileCol); this.X = sl.X + v.yOffset; this.Y = sl.Y + Velocity; } base.Move(); }