How can I implement collision detection for these tiles?
- by Fiona
I am wondering how this would be possible, if at all.
In the image below:
http://i.stack.imgur.com/d8cO3.png
The light brows tiles are ground, while the dark brown is background, so the player can pass over those tiles.
Here's the for loops that draws the level:
float scale = 1f;
for (row = 0; row < currentLevel.Rows; row++)
{
for (column = 0; column < currentLevel.Columns; column++)
{
Tile tile = (Tile)currentLevel.GetTile(row, column);
if (tile == null) { continue; }
Texture2D texture = tile.Texture;
spriteBatch.Draw(texture, new Microsoft.Xna.Framework.Rectangle(
(int)(column * currentLevel.CellSize.X * scale),
(int)(row * currentLevel.CellSize.Y * scale),
(int)(currentLevel.CellSize.X * scale),
(int)(currentLevel.CellSize.Y * scale)), Microsoft.Xna.Framework.Color.White);
}
}
Here's what I have so far to determine where to create a Rectangle:
Microsoft.Xna.Framework.Rectangle[,,,] groundBounds = new Microsoft.Xna.Framework.Rectangle[?, ?, ?, ?];
int tileSize = 20;
int screenSizeInTiles = 30;
var tilePositions = new System.Drawing.Point[screenSizeInTiles, screenSizeInTiles];
for (int x = 0; x < screenSizeInTiles; x++)
{
for (int y = 0; y < screenSizeInTiles; y++)
{
tilePositions[x, y] = new System.Drawing.Point(x * tileSize, y * tileSize);
groundBounds[x, y, tileSize, tileSize] = new Microsoft.Xna.Framework.Rectangle(x, y, 20, 20);
}
}
First off, I'm not sure how to initialize the array groundBounds (I don't know how big to make it). Also, I'm not entirely sure how to go about adding information to groundBounds.
I want to add a Rectangle for each tile in the level. Preferably I'd only make a Rectangle for those tiles accessible by the player, and not background tiles, but that's for a different day.
FYI, the map was made with a freeware program called Realm Factory.