HaxeFlixel tilemap碰撞

时间:2014-11-17 12:26:09

标签: collections collision-detection haxe haxeflixel

我正在使用HaxeFlixel Framework在Haxe开发游戏。

我决定将地图拆分成块,这样我就可以在运行时加载地图的新区域(无需加载屏幕)。为此,我将每个块放在FlxTilemap的实例中。

现在我注意到,当我尝试移动FlxTilemap时(通过更改其xy属性),碰撞检测(with FlxG.collide(hero, map))无法正常工作。

为了测试碰撞检测不起作用的原因,我只是在场景中添加了FlxTilemap并将其与我的英雄相撞:

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);

碰撞检测是在状态的update()方法中进行的:

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

    FlxG.collide(hero, map);
}   

我是以错误的方式做事还是只是错过了什么?

编辑:

HaxeFlixel碰撞检测似乎存在问题。 仅当x的{​​{1}}和y属性为正时,才会检测到冲突。 我也想要有负FlxObject / x职位。

是否有人知道此问题的修复或解决方法?

1 个答案:

答案 0 :(得分:2)

尝试更改世界空间的范围。具体而言,FlxG.worldBounds