1

HaxeFlixel フレームワークを使用して Haxe でゲームを開発しています。

マップをチャンクに分割して、実行時にマップの新しい領域をロードできるようにすることにしました (画面のロードなし)。そのために、すべてのチャンクを のインスタンスに入れますFlxTilemap

を移動しようとすると (とプロパティFlxTilemapを変更して)、衝突検出 ( ) が正しく機能しないことに気付きました。xywith 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衝突は、およびyのプロパティが正の場合にのみ検出されFlxObjectます。xネガティブ/yポジションも持ちたいです。

この問題の修正または回避策を知っている人はいますか?

4

1 に答える 1