在等距游戏中的对象深度排序

时间:2014-01-30 23:48:24

标签: c# xna monogame isometric tile-engine

我有等距瓷砖游戏引擎(钻石地图样式),我需要对我绘制的对象进行排序。我的对象是1x1,2x1,4x2。我怎么能根据这段代码来做呢?

for (int osaY = 0; osaY < mapSize; osaY++)
        {
            for (int osaX = 0; osaX < mapSize; osaX++)
            {
                int x = osaX * 32;
                int y = osaY * 32;

                PlaceObject(thisObject, CartToIso(new Vector2(x, y)), new Vector2(osaX, osaY));
            }
        }

1 个答案:

答案 0 :(得分:0)

我如何解决排序:
 1.创建IDisplay界面并将其添加到处理显示Draw(SpriteBatch batch)的每个类中  2.创建DisplayManager,其中包含AddRemoveDraw方法和layers (IDisplay对象列表)如你所愿。就个人而言,中间层是我对我的东西进行排序的层。所以我可以把东西放在排序对象后面,然后排序对象  3.在处理绘图的Main类中,调用DisplayManager's Draw函数,该函数将运行layers(列表)和IDisplay项并调用{{1每个项目的功能。

Draw

然后在DisplayManager中:

spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend);
DisplayManager.Draw(spriteBatch);
spriteBatch.End();