【发布时间】:2021-06-01 20:30:33
【问题描述】:
我有一个瓷砖地图:
this.TileMap = Content.Load<TiledMap>("Maps/MyTileMap");
_tiledMapRenderer = new TiledMapRenderer(GraphicsDevice, this.TileMap);
我想在第 0 层和第 1 层之间渲染我的正常精灵。有点像这样:
DrawLayer(0, 0f);
foreach(var sprite in this.Sprites)
{
sprite.Draw(spriteBatch, gameTime);
}
DrawLayer(1, 1f);
sprite.Draw 会:
var destRectangle = new Rectangle((int)Position.X, (int)Position.Y, Texture.Width, Texture.Height);
spriteBatch.Draw(Texture, destRectangle, null, Color.White, 0, Vector2.Zero, SpriteEffects.None, 0.2f);
DrawLayer 做到了:
var layer = this.TileMap.Layers[idx];
_tiledMapRenderer.Draw(layer, this.Camera.GetViewMatrix(), depth: depth);
但我的常规精灵仍然是最重要的。
地形在第 0 层,树在第 1 层(显然)。
我认为提供 layerDepth 应该确保正确的绘制顺序,但显然不能。
Any pointers on how to fix this?
或者,或者,
how can I add my sprites to a layer?
我听说这是一个选项,但我不知道怎么做。
【问题讨论】:
-
树的顶部应始终绘制在实体/玩家层之上的层中。在这个例子中,确实应该有第 3 层,树的底部树干应该是第 1 层。而玩家/实体是第 2 层。
标签: c# monogame tiled monogame-extended