1

我正在使用 HaxeFlixel 框架在 Haxe 中开发游戏。

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

现在我注意到,当我尝试移动 a 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只有当 s 的和y属性为FlxObject正时,才会检测到碰撞。我也想有负x/y职位。

有谁知道这个问题的修复或解决方法?

4

1 回答 1

2

尝试改变你的世界空间的界限。具体来说,FlxG.worldBounds

于 2014-11-22T16:22:56.510 回答