HaxeFlixel tilemap collisions

934 views Asked by At

I am developing a game in Haxe with the HaxeFlixel Framework.

I decided to split the map in chunks so i can load new areas of the map at runtime (without loading screen). For that i put every chunk in an instance of FlxTilemap.

Now I noticed that, when i try to move a FlxTilemap (by changing its x and y properties) the collision detection (with FlxG.collide(hero, map)) does not work right.

To test why the collision detection doesn't work, I simply added a FlxTilemap to the scene and collided it with my hero:

map = new FlxTilemap();
    var mapData = "";
    for (y in 0...8) {
        for (x in 0...8) {
            mapData += "0,";
        }
        mapData += "\n";
    }

    map.loadMap(mapData, AssetPaths.tuxemon_sprites__png, 16, 16);

    for (x in 0...8) {
        map.setTile(x, 6, SpriteSheet.TILES.FENCE.LOOSE_1_RIGHT);
    }

    for (y in 0...8) {
        map.setTile(6, y, SpriteSheet.TILES.FENCE.LOOSE_1_RIGHT);
    }

    map.setPosition(
        map.x - map.width / 2,
        map.y - map.height / 2
    );

    add(map);

Collision detection is handeled in the update() method of the state:

override public function update():Void
{
    super.update();

    FlxG.collide(hero, map);
}   

Am I doing it the wrong way or did I simply miss something?

EDIT:

There seems to be a problem in the HaxeFlixel collision detection. The collision will only be detected when the x and y properties of the FlxObjects are positive. I want to have negative x/y positions as well.

Does anyone know a fix or workaround for this problem?

1

There are 1 answers

0
haxeguest On BEST ANSWER

Try changing the bounds of your world space. Specifically, FlxG.worldBounds.