Collision Detection thought and is it possible?

I was thinking, since I am a visual learner I want to visually put my maps together from the image tiles, and save them as one big picture(similar to a spreadsheet I guess). Lets say that my tiles are going to be 40 x 40 pixles.

Instead of checking a map tile against the player’s position for collision detection, would it be possible to check an array of the exact same size of the tilled map isself?

Let me explain…

I’d like to have an invisible grid laid on-top of the map. Each grid cell will be exactly the same size as each tile 40 x 40 pixles. Each cell will either have a value of 1 for true or 0 for false.

Would it be possible to check the array/grid for all the true values and let the player be-able to walk in those cells?

Sorry for my horrible explaining skills. Look at the photo below to get an idea. The bottom line is instead of checking the map for player collision, I’d rather just allow the player’s character to walk in the cells that have a true(1) value. Since the array will be the exact size as the map, it will look as if the player is actually walking on the map, when the player is actually walking threw the array/grid cells.

The brown blocks are walls that the player shouldn’t be able to walk through. Therefore the brown blocks would hold a 0(false) value. The gray is the walk-able area which holds the 1(true) value, letting the methods of character movement know that the player is allowed to move in those areas. The green dot is the player.

It just seems it would be easier and processer friendly to check a boolean value vs checking a players position, then having to check the tiles position and then having to compare the two for collision detection.

If this is indeed possible it would make map creation and checking for collision detection much easier! Even though if it is indeed possible there wouldn’t be any need for collision detection since the player wouldn’t be allowed to walk anywhere with a false value set in the array in the first playce :slight_smile:

Thanks in advance for any ideas or replys.

Hello subless!

I belive there is an excellent tutorial for this over at cokeandcode.com if you havent checked that out yet!

A bit rough but all you should need to do is to declare an array wich holds the values you want, would be BLOCKED (0) and CLEAR(1) in this case.
Then you simply compare the players position to find out whether the tile you try to move too is clear or not.

something like this:


 public boolean moveable(int playerX, int playerY) {
        //return true if this happen- coords from player move
        return blockedData[ playerX ][ playerY ] == CLEAR;
    }

Sorry for a terrible explanation, but take a look here http://www.cokeandcode.com/index.html?page=tutorials should cover something like this in greater details:)