2012-04-11 23 views
3

私は回転に問題があります。私はdrawメソッドを使ってTexture2Dオブジェクトを回転させることができることを知っています。Texture2DをXNAのDrawメソッドで回転させますか?

私の目標は、テクスチャを180°回転させることです。たとえば、頭が下にあるカメラで人間の写真を撮ると、頭がもう一度上になるように回転させたいと思う。

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

回転が正常に動作しますが、私は別の問題があります:

ここでは、コードまたは回転である私はそれを回転させた後、0,0を配置するテクスチャを追加した場合 enter image description here

は、それはもはや見えません。

オブジェクトを回転させたり、反射したりするにはどうすればいいですか?赤い点が再び左上隅にくるようにしますか?

答えて

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

次いで精神から0/0の左上位置にないので、これは、正しい解決策ではありません。 – gurehbgui

+4

希望の位置+原点を試してください –

+2

副次的なことに、とにかく左上の代わりに中心でスプライト位置を定義することをお勧めします。より直観的で、位置決めや衝突で頭痛を軽減します。 –

関連する問題