2014-04-05 49 views
0

我正在創建一個遊戲,玩家在屏幕中間繪製。爲了修改玩家的望着,我使用下面的代碼行的方向: 在播放器類,在Draw()函數:如果我使用旋轉,Spritebatch將不會繪製

//Draw player 
public void Draw(SpriteBatch spriteBatch) 
{ 
    spriteBatch.Draw(currentTexture, position, null, Color.White, rotation, centre, 1.0f, SpriteEffects.None, 0f); 
} 

我打電話說功能Draw()函數中的主要類:

//Draw 
protected override void Draw(GameTime gameTime) 
{ 
    GraphicsDevice.Clear(Color.Black); 
    spriteBatch.Begin(); 

    //Draw player 
    player.Draw(spriteBatch); 

    spriteBatch.End(); 
    base.Draw(gameTime); 
} 

玩家沒有被繪製,也沒有錯誤出現。

奇怪的是,我已經使用了這個完全相同的代碼來繪製我在兩天前做的遊戲,它工作正常。

如果我用下面的線代替,玩家繪製的,但我沒有離開,除非我用不同的紋理爲每個方向修改輪換球員的能力:

spriteBatch.Draw(currentTexture, position, Color.White); 
+1

我猜測問題出在你設定了原點。你的中心矢量。嘗試使用Vector2.Zero而不是中心,看看會發生什麼。 – deathismyfriend

+0

在繪製玩家之前不應該調用'base.Draw(gameTime);' – Cyclonecode

+0

謝謝,@deathismyfriend,解決了它! – Bensas

回答

1

我猜問題在於你是否設置了原點。你的中心矢量。嘗試使用Vector2.Zero而不是中心,看看會發生什麼。

0

對於您的中心矢量,您可能需要紋理的中心。 SpriteBatch.Draw中的Vector2中心參數與紋理座標有關。這意味着,在你的對象中心旋轉,你就需要有

new Vector2(texture.Width/2, texture.Height/2)

值我會建議在您的播放器類創建一個方法(或遊戲對象類,如果你正在做的那種東西),返回你的中心與紋理座標相對Vector2(就像我上面提供的那個)!快樂編碼!