コード例 #1
0
bool TiledLayer::willSpriteCollideOnTile(	Physics *physics,
											CollidableObject *dynamicObject)
{
	int startCol, endCol, startRow, endRow;
	AABB *ss = dynamicObject->getSweptShape();
	initOverlappingCellRange(ss, startCol, endCol, startRow, endRow);
	AABB tileAABB;
	for (int i = startCol; i <= endCol; i++)
	{
		int j = endRow;
		Tile *testTile = getTile(j,i);
		if (testTile->collidable)
		{
			float tileX = (float)(i * tileWidth);
			float tileY = (float)(j * tileHeight);
			tileAABB.setCenterX(tileX + (tileWidth/2));
			tileAABB.setCenterY(tileY + (tileHeight/2));
			tileAABB.setWidth((float)tileWidth);
			tileAABB.setHeight((float)tileHeight);
			bool willCollide = physics->willSpriteCollideOnTile(dynamicObject, &tileAABB);
			if (willCollide)
				return true;
		}
	}
	return false;
}
コード例 #2
0
/*
	sweptSpaceTiles
*/
void TiledLayer::findTileCollisionsForSprite(	Physics *physics,
												CollidableObject *dynamicObject)
{

	int startColumn, endColumn, startRow, endRow;
	AABB *aabb = dynamicObject->getSweptShape();
	initOverlappingCellRange(aabb, startColumn, endColumn, startRow, endRow);
	for (int i = startColumn; i <= endColumn; i++)
	{
		for (int j = startRow; j <= endRow; j++)
		{
			Tile *testTile = getTile(j,i);
			if (testTile->collidable)
			{
				float tileX = (float)(i * tileWidth);
				float tileY = (float)(j * tileHeight);
				
			}
		}
	}
}