How can I implement collision detection for these tiles?
Posted
by
Fiona
on Game Development
See other posts from Game Development
or by Fiona
Published on 2012-12-17T02:33:56Z
Indexed on
2012/12/17
5:14 UTC
Read the original article
Hit count: 353
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.
© Game Development or respective owner