public void Draw(SpriteBatch spriteBatch) { Rectangle sourceRectangle; Rectangle destinationRectangle; if (currentFrame < 3) { sourceRectangle = new Rectangle(0, 0, 96, 96); destinationRectangle = new Rectangle((int)GlobalDefinitions.Position.X, (int)GlobalDefinitions.Position.Y, 96, 96);//I don't understand why the width of destinationRectangle has to be like this. } else if (3 <= currentFrame && currentFrame < 6) { sourceRectangle = new Rectangle(96, 0, 96, 96); destinationRectangle = new Rectangle((int)GlobalDefinitions.Position.X, (int)GlobalDefinitions.Position.Y, 96, 96); } else { sourceRectangle = new Rectangle(96 + 96, 0, 96, 96); destinationRectangle = new Rectangle((int)GlobalDefinitions.Position.X, (int)GlobalDefinitions.Position.Y, 96, 96); } spriteBatch.Draw(Texture2DStorage.GetLinkUseItemSpriteSheet(), destinationRectangle, sourceRectangle, Color.White);//use Texture2DStorage class to load texture2D }