Flipping a character

I would like to flip character when it walks left\right, I created a character from different body parts so flipping each of them caused this: http://i.stack.imgur.com/SRW9G.png
the reason of course was because it flipped the body parts in their own position, but not all the player together.

after that I had an idea and it was to draw the player to render target and flip the rendertarget when drawing, it worked (kind of), but when I walked when flipped it walked backwards and it also flipped the player position on the screen.

here is the code:

    spriteBatch.Draw(character, rec,rec, Color.White,0,Vector2.Zero,SpriteEffects.None,0);
        spriteBatch.Draw(character, rec, rec, Color.White, 0, Vector2.Zero, SpriteEffects.FlipHorizontally, 0);

character=render target that the player was drawn to.

is there anything I can do? flipping manually going to be a serious pain, I will need to move manually over 10 animations with 4+ frames each twice!

here is how I draw the character:

  if (Frame == 0)
                HeadPosition.X = Position.X;
                HeadPosition.Y = Position.Y;
                BodyPosition.X = HeadPosition.X + 8;
                BodyPosition.Y = HeadPosition.Y + 32;
                TopHandPosition.X = HeadPosition.X + 2;
                TopHandPosition.Y = HeadPosition.Y + 36;
                BackHandPosition.X = HeadPosition.X + 20;
                BackHandPosition.Y = HeadPosition.Y + 36;
                HeadSource = new Rectangle(0, 0, this.Head.Width, this.Head.Height);
                BodySource = new Rectangle(0, 0, 24, 54);
                TopHandSource = new Rectangle(0, 0, 10, 27);
                BackHandSource = new Rectangle(0, 0, 15, 27);
                theSpriteBatch.Draw(BackHand, BackHandPosition, BackHandSource,
   Color.White, 0.0f, Vector2.Zero, Scale, FlipIs, 0);
                theSpriteBatch.Draw(Body, BodyPosition, BodySource,
             Color.White, 0.0f, Vector2.Zero, Scale, FlipIs, 0);
                theSpriteBatch.Draw(Head, HeadPosition, HeadSource,
                Color.White, 0.0f, Vector2.Zero, Scale, FlipIs, 0);
                theSpriteBatch.Draw(TopHand, TopHandPosition, TopHandSource,
         Color.White, 0.0f, Vector2.Zero, Scale, FlipIs, 0); 


If it’s a must that you have all the separate parts I think you need to draw them to a “render target” first, then flip the whole image as a whole. Basically this means drawing all the parts to a single image, then you draw that single image to the screen which then of course you can flip if the character is going left/right. This might help:


@Harag I did that, please read the thread…