2012-04-11 4 views
3

Ich habe ein Problem mit dem Drehen. Ich weiß, dass ich ein Texture2D-Objekt mit der Zeichenmethode drehen kann.Drehen Sie eine Texture2D mit der Draw-Methode in XNA?

Mein Ziel ist es, eine Textur um 180 ° zu drehen. Wenn ich zum Beispiel ein Bild von einem Menschen mit der Kamera mache, wo der Kopf unten ist, möchte ich in der Lage sein, es so zu drehen, dass der Kopf wieder oben ist.

Hier ist der Code oder die Rotation:

spriteBatch.Draw(Texture, Position, null, Color.White, MathHelper.Pi, new Vector2(), 1.0f, SpriteEffects.None, 0f); 

Die Rotation funktioniert gut, aber ich habe ein anderes Problem: enter image description here

Wenn ich die Textur hinzufügen zu positionieren 0,0 sie nach dem Drehen, es ist nicht mehr sichtbar.

Wie kann ich das Objekt drehen oder spiegeln, so dass der rote Punkt wieder in der oberen linken Ecke ist?

Antwort

3

http://msdn.microsoft.com/en-us/library/ff433989.aspx

public void Draw (
    Texture2D texture, 
    Vector2 position, 
    Nullable<Rectangle> sourceRectangle, 
    Color color, 
    float rotation, 
    Vector2 origin, 
    Vector2 scale, 
    SpriteEffects effects, 
    float layerDepth) 

//Using: 
var origin = new Vector2() 
{ 
    X = texture.Width/2, 
    Y = texture.Height/ 2 
}; 


spriteBatch.Draw(texture, Vector2.Zero, null, Color.White, MathHelper.Pi, origin, 1f, SpriteEffects.None, 0f)` 
+0

dies nicht die richtige Lösung ist, weil dann von dem sprit der 0/0 nicht in der oberen linken Position befindet. – gurehbgui

+4

Probieren Sie die gewünschte Position + den Ausgangspunkt –

+2

Als Randnotiz empfehle ich, Sprite-Positionen nach ihren Zentren zu definieren, anstatt nach oben links. Es ist intuitiver und spart Kopfschmerzen durch Positionierung und Kollision. –