【问题标题】:Drawing a layered tile based map绘制基于分层瓦片的地图
【发布时间】:2015-04-29 03:29:08
【问题描述】:

因此,正如标题所述,我正在尝试绘制基于分层图块的地图。到目前为止我有这个。我使用的瓷砖是 (32, 32)。它目前仅绘制一种类型的瓷砖作为整个瓷砖地图。当它应该绘制几种不同类型的图块来制作地图时。

for (int layers = 0; layers < map.Layers.Count; layers++) {
    for (var i = 0; i < map.Layers[layers].Tiles.Count; i++) {
        int gid = map.Layers[layers].Tiles[i].Gid;

        if (gid != 0) {
            int tileFrame = gid - 1;
            int row = tileFrame / (map.Height / tileHeight);

            float x = (i % map.Width) * map.TileWidth;
            float y = (float)Math.Floor(i / (double)map.Width) * map.TileHeight;

            Rectangle tilesetRec = new Rectangle(0, 0, 32, 32);

            for (int j = 0; j < tileSets.Count; j++) {
                for (int k = 0; k < tileSets[j].Tiles.Count; k++) {
                    spriteBatch.Draw(tileSets[j].Tiles[k].Image.Texture, new Rectangle((int)x, (int)y, 32, 32), Color.White);
                }
            }
        }
    }
}

这不完全是我的代码,这是我尝试构建的其他人的代码,显然它适用于绘制一层的人。这是原始代码:

for (var i = 0; i < _map.Layers[0].Tiles.Count; i++) {
    int gid = _map.Layers[0].Tiles[i].Gid;

    // Empty tile, do nothing
    if (gid == 0) {

    } else {
        int tileFrame = gid - 1;
        int row = tileFrame / (_tileset.Height / _tileHeight);

        float x = (i % _map.Width) * _map.TileWidth;
        float y = (float)Math.Floor(i / (double)_map.Width) * _map.TileHeight;

        Rectangle tilesetRec = new Rectangle(_tileWidth * tileFrame, _tileHeight * row, 32, 32);

        spriteBatch.Draw(_tileset, new Rectangle((int)x, (int)y, 32, 32), tilesetRec, Color.White);
    }
}

【问题讨论】:

  • i'm not exactly sure what i'm doing wrong - 请查看How to Ask,然后查看edit 您的问题以包含特定问题。
  • 尝试调试?这将比提问最快

标签: c# dictionary monogame tile tiled


【解决方案1】:

您的问题是,对于每个图块位置,您似乎都在绘制所有图块集中的所有图块。变量tileFramerowtilesetRec,在原始代码中用于渲染特定图块,在您的第一个sn-p中没有使用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多