Defined in Module impact.collision-map, inherits from ig.Map


// Create CollisionMap
var data = [
var collision = new ig.CollisionMap( 16, data );

// Do a trace
var res = collision.trace( x, y, vx, vy, objectWidth, objectHeight );

if( res.collision.x || res.collision.y ) {
	// The trace collided with the map at
	// (res.pos.x, res.pos.y)


An ig.Collision takes a 2D tilemap and allows tracing against it for collisions.

The ig.Game class' .loadLevel() method takes the save data from Weltmeister and creates a CollisonMap if present.

By default, all entities trace against the as part of their update cycle.


new ig.CollisionMap( tilesize, data, [tiledef] )

New in 1.19

The optional tiledef parameter specifies the tile definition to use. This defines which tiles are slopes etc. The default is ig.CollisionMap.defaultTileDef. Pass an empty object ({}) to only have solid/non-solid tiles.



Removed in 1.19

First tile number that is considered solid. Default 1.


Removed in 1.19

Last tile number that is considered solid. Default 255.


New in 1.20

The last tile number that is used for slopes. All tiles above this number can be used for custom tiles. .lastSlope is automatically determined by the constructor through the tiledef property.


.trace( x, y, sx, sy, objectWidth, objectHeight )

Does a trace from (x, y) to (x + sx, y + sy) for an object with the specified objectWidth and objectHeight. This method returns a "trace result" in the following form:

	collision: { x: false, y: false, slope: false },
	pos: { x: 0, y: 0 }, // Resulting object position
	tile: { x: 0, y: 0 } // Tile for the collision

New in 1.19

The collision.slope property is either false (if there was no slope collision) or an object with the properties x, y - the slope direction - and nx, ny - the slope normal.