这可能是一个noob问题,但在这里......
我正在使用Visual Studio和XNA Framework(3.1),我只会为我的游戏绘制2D精灵,这里是主类中的Draw方法:
GraphicsDevice.Clear(Color.CornflowerBlue);
spriteBatch.Begin(SpriteBlendMode.AlphaBlend, SpriteSortMode.Immediate, SaveStateMode.None);
background.Draw(this.spriteBatch);
player1.Draw(this.spriteBatch);
player2.Draw(this.spriteBatch);
spriteBatch.End();
base.Draw(gameTime);
问题在于,player2与player1重叠(因为他被抽出),我希望最后绘制2个玩家中最低的一个(按其位置)(以模拟深度)。
提前致谢! (抱歉我的英语,我是法国人......)
答案 0 :(得分:2)
SpriteBatch.Draw方法存在一个重载,该方法提供了一个'layerDepth'参数(前面为0,后面为1)。你可以设置一个单独的精灵的layerDepth,并在SpriteBatch.Begin方法中使用spriteSortMode.BackToFront。
答案 1 :(得分:0)
好的,谢谢Steve,我做到了。 我刚刚将我的播放器SpriteBatch.Draw方法更改为SpriteBatch.Draw(X,X,(...),layerDepth) 使用layerDepth更新玩家的Y位置。 不得不使用spriteSortMode.FrontToBack:因为原点在左上角,一切都被颠倒了。 谢谢!
答案 2 :(得分:0)
史蒂夫的回答可能是最简单的,但有时立即抽签是有利的。 另一种方法是根据Y轴对列表中的玩家和对象进行排序。