【发布时间】:2014-04-06 06:42:07
【问题描述】:
我正在创建一个游戏,其中玩家被绘制在屏幕中间。为了修改玩家正在看的方向,我使用以下代码行: 在播放器类中,在 Draw() 函数中:
//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);
【问题讨论】:
-
我猜问题出在你是否设置了原点。你的中心向量。尝试使用 Vector2.Zero 而不是 center 看看会发生什么。
-
在绘制玩家之前不应该调用
base.Draw(gameTime);吗? -
谢谢@deathismyfriend,解决了!