Game Development Community

Tile collisions revisited

by Don Hogan · in Torque Game Builder · 08/03/2005 (4:33 pm) · 2 replies

I read through this thread a few times www.garagegames.com/mg/forums/result.thread.php?qt=31892, but haven't had any luck with getting it working.

Here's my map function, I'm not getting any errors in the console, but I'm not getting any flaming crashes into the planetoid, either. =)

function CreateTileMap()
{
    // Create tile-map.
    %spaceMap = new fxTileMap2D() { scenegraph = t2dSceneGraph; };
    
    // Load saved tile-map file.
    %spaceMap.loadTileMap("~/client/maps/space_02.map");
    
    // Load tile layer from tile-map
    $planet_detailLayer = %spaceMap.getTileLayer( 4 );

    $planet_detailLayer.setPosition( "0 0" );
    $planet_detailLayer.setTileSize( "40 40" );
    $planet_detailLayer.setWrap( false, false );
    $planet_detailLayer.setGroup( 17 );
    $planet_detailLayer.setLayer( 17 );
    
    $planet_detailLayer.setTileCollisionActive( "3 2" , true);
    $planet_detailLayer.setTileCollisionPolyPrimitive("3 2" , 12 );
    $planet_detailLayer.setTileCollisionScale( "3 2" , "1 1");
    
    $planet_detailLayer.setCollisionMaterial( immovableMaterial );
    // The below line should default it to colliding with group 16 and all layers, per T2Dreference guide pg.5
    // In this case, only the player is in group 16
    $planet_detailLayer.setCollisionMasks( BIT(16) );
    $planet_detailLayer.setCollisionCallback( true );
}

I realize that I could just place this into the world as a sprite, but I'd rather have it in the map layer and now it's become a puzzler as to why it's not working.

Thanks,
Don

#1
08/03/2005 (10:48 pm)
Don't worry I just spent 8 hours trying to get the same thing working...

So compare your code to my now working code....

%map.loadTileMap("~/maps/test.map");
	
	// Reference Layers.
	%skyLayer = %map.getTileLayer( 0 );
	
	// LAYER SETTINGS 
	%skyLayer.setPosition( "0 0" ); // YOU HAVE TO SET THIS //
	%skyLayer.setSize( "1024 768" ); //  // ISN'T THERE A DEFAULT ?
	//%skyLayer.setWrap( true, false ); // WRAP AROUND SCROLLING
	//%skyLayer.setAutoPan( "5 0" ); // SCROLLING 
	%skyLayer.setLayer( 1 );
	%skyLayer.setGroup( 1 );
	%skyLayer.setCollisionMasks( BIT(2), BIT(2) );
	%skyLayer.setCollisionActive( false, true ); // SEND, RECIEVE 
	//%skyLayer.setCollisionPolyCustom(4, "-1.000000 0.800000 1.000000 0.800000 1.000000 1.000000 -1.000000 1.000000");
	//%skyLayer.setCollisionScale("1 1");
	//%skyLayer.setCollisionPhysics(true,false);
	//%skyLayer.setCollisionCallback( true );  
	//%skyLayer.setCollisionMaterial(immovableMaterial);
	//%skyLayer.setDebugOn( BIT(5) );


	$player.tag = "player";
	$player.setPosition("-35 0");
	$player.setSize( "32 32" );
	$player.setImageMap( PlayerImageMap );
	
	$player.setGroup( 2 ); // 
	$player.setLayer( 2 ); // ???
	$player.setCollisionCallback( true );
	$player.setCollisionActive( true, true );
	//$player.setCollisionMaterial( immovableMaterial );
	//$player.setCollisionMaterial( standardMaterial );
	//$player.setCollisionPolyCustom( 4, "-1 0 -0.1 -0.6 0.98 0.15 -0.1 0.7" );
	//$player.setCollisionMasks( $enemyCollisionGroups | $upgradeCollisionGroups, $enemyCollisionLayers | $upgradeCollisionLayers );
	$player.setCollisionMasks( BIT(1), BIT(1) );
	//$player.setCollisionPhysics( false, false );
 	//$player.setCollisionScale("1 1");
 	//$player.setDebugOn(BIT(5));
#2
08/04/2005 (2:10 pm)
Hmm. I'll have to take a more careful look at this when I get home. Thanks for posting it!

- Don