Monogame - 生成平铺贴图

时间:2016-05-03 20:36:20

标签: c# .net xna monogame

我正在创建一个2D游戏,我希望能够绘制瓷砖来创建我的游戏世界。我创建了List,如此:

static private List<Rectangle> tiles = new List<Rectangle>();

public const int TileWidth = 50;
public const int TileHeight = 50;

public static void initialise(Texture2D tileTexture)
{
        texture = tileTexture;
        tiles.Clear();

        tiles.Add(new Rectangle(0, 267, TileWidth, TileHeight));
        tiles.Add(new Rectangle(1575,795, TileWidth, TileHeight));
        tiles.Add(new Rectangle(1315,267, TileWidth, TileHeight));
        tiles.Add(new Rectangle(1051,797, TileWidth, TileHeight));
    }

我正试图以一种允许我手动选择使用数组放置每个图块的位置的方式在我的游戏世界中生成图块,但是我对此有一些困难。< / p>

2 个答案:

答案 0 :(得分:1)

我猜你想要一个双层阵列的瓷砖?我会继续思考你想要在这里实现的目标。

也许是这样的:

private static Rectangle[][] tiles;
private const int worldWidth = 50;
private const int worldDepth = 50;

public static void Initialize(Texture2D tileTexture)
{
    // Initialize game table
    tiles = new Rectangle[worldWidth][];
    for (int l = 0; l < worldWidth; l++)
    {
        tiles[l] = new Rectangle[worldDepth];
    }

    // Fill rectangles in for every tile
    for(int i = 0; i < worldWidth; i++)
    {
        for (int k = 0; k < worldDepth; k++)
        {
            // Tile (0,0): x = 0, y = 0
            // Tile (0,1): x = 0, y = 50
            // and so on...
            tiles[i][k] = new Rectangle(i * TileWidth, k * TileHeight, TileWidth, TileHeight);
        }
    }
}

这可能是更好的方法,但这是一个简单的解决方案,应该很容易理解。

答案 1 :(得分:-1)

您可以像这样绘制矩形列表

for(int i = 0; i < tiles.Count(); i++)
    spriteBatch.Draw(tileImage, tiles[i], Color.White);

请提供有关您的错误/挣扎的更多信息,我会提供更好的答案。