Jump to content

  • Log In with Google      Sign In   
  • Create Account

Banner advertising on our site currently available from just $5!


1. Learn about the promo. 2. Sign up for GDNet+. 3. Set up your advert!


lukadev0

Member Since 20 Apr 2013
Offline Last Active May 19 2013 08:08 AM

Topics I've Started

AABB vs TileMap collision response

17 May 2013 - 07:43 AM

Hi everyone!
I'm making a 2d tilemap game..and I have problems with aabb vs tilemap collision response..here's how I do it:
void handle_player_world_collision(Player* player,TileMap* map)
{
	int topleft_xtile=map->xworld_to_map(player->pos.x);
	int topleft_ytile=map->yworld_to_map(player->pos.y);
	int bottright_xtile=map->xworld_to_map(player->pos.x+player->aabb.w);
	int bottright_ytile=map->yworld_to_map(player->pos.y+player->aabb.h);

	//we loop through all the tiles that the player's aabb touch
	for(int i=topleft_xtile;i<bottright_xtile;i++)
	{
		for(int j=topleft_ytile;j<bottright_ytile;j++)
		{
			//here we test for map coordinates (i,j) validity...
			//...
			///////
			if(map->getTile(i,j)->is(Tile::SOLID))
			{
				if(player->vel.x<=0 && player->vel.y<=0)
				{//we are trying to move left_top;calculate the overlap according to each axis
					//and resolve collision where the overlap is minimal
					float xoverlap=(i+1)*map->tile_width-player->pos.x;
					float yoverlap=(j+1)*map->tile_height-player->pos.y;
					if(xoverlap<yoverlap)
					{
						player->pos.x=(i+1)*map->tile_width;
						player->vel.x=0;
					}
					else
					{
						player->pos.y=(j+1)*map->tile_height;
						player->vel.y=0;
					}
				}
				//here you the same as above
				//detect what's the movement direction that led o this 
                                //collision.
				//resolve collision by changing the player position to 
                                //be adjacent to the tile in the direction where the 
                                //overlap was minimal!
			}
		}
	}
}

I have problems in detecting the collision when I move diagonally;and sometimes even horizontally!
Am I doing it right?of course not...
I want also to detect the side of the collision of two AABB..
Can Anyone show me how to do it?

AABB vs TileMap collision response

16 May 2013 - 06:26 AM

Hi everyone!
I'm making a 2d tilemap game..and I have problems with aabb vs tilemap collision response..here's how I do it:

 

void handle_player_world_collision(Player* player,TileMap* map)
{
	int topleft_xtile=map->xworld_to_map(player->pos.x);
	int topleft_ytile=map->yworld_to_map(player->pos.y);
	int bottright_xtile=map->xworld_to_map(player->pos.x+player->aabb.w);
	int bottright_ytile=map->yworld_to_map(player->pos.y+player->aabb.h);

	//we loop through all the tiles that the player's aabb touch
	for(int i=topleft_xtile;i<bottright_xtile;i++)
	{
		for(int j=topleft_ytile;j<bottright_ytile;j++)
		{
			//here we test for map coordinates (i,j) validity...
			//...
			///////
			if(map->getTile(i,j)->is(Tile::SOLID))
			{
				if(player->vel.x<=0 && player->vel.y<=0)
				{//we are trying to move left_top;calculate the overlap according to each axis
					//and resolve collision where the overlap is minimal
					float xoverlap=(i+1)*map->tile_width-player->pos.x;
					float yoverlap=(j+1)*map->tile_height-player->pos.y;
					if(xoverlap<yoverlap)
					{
						player->pos.x=(i+1)*map->tile_width;
						player->vel.x=0;
					}
					else
					{
						player->pos.y=(j+1)*map->tile_height;
						player->vel.y=0;
					}
				}
				//here you the same as above
				//detect what's the movement direction that led o this 
                                //collision.
				//resolve collision by changing the player position to 
                                //be adjacent to the tile in the direction where the 
                                //overlap was minimal!
			}
		}
	}
}

 

I have problems in detecting the collision when I move diagonally;and sometimes even horizontally!

Am I doing it right?of course not...

I want also to detect the side of the collision of two AABB..

Can Anyone show me how to do it?


Best way to do collision detection for a 2D Platformer

20 April 2013 - 11:00 AM

Hi everybody..
I have a question:What's the best method to perform collision detection & response in a 2D platformer?
There's AABB,Polygon intersection,ray casting (used in sonic),the collision points(that surround the player),..
when I say best I mean the approach that gives you the most possibilities..I know this is very game dependant,let's say that I want to make a braid-like style of game, where platform physics just feel natural (sonic too) and where the platforming isn't the core gameplay!

PARTNERS