You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Phaser 3加载Tiled交错六边形地图出现偏移错位问题求助

Phaser 3加载Tiled交错式六边形地图偏移问题求助

地图显示异常效果

我正在开发一款使用Tiled制作的六边形(交错式)地图的Phaser 3游戏。但将地图加载到Phaser后,瓦片布局出现偏移,部分坐标缺失或错位,顶部行完全无法正常显示。

Tiled地图配置

  • 方向:六边形(交错式)
  • 交错轴:Y
  • 交错索引:Even(偶数)
  • 瓦片宽/高:64
  • 六边形边长:32
  • 地图尺寸:宽16,高10

已验证内容

  • JSON加载正常(map.width、map.height数值正确)
  • 瓦片宽/高及六边形边长与Tiled设置一致
  • 地图方向和交错轴参数符合预期

请问有人能指出问题所在吗?是否有遗漏的配置或其他加载方式?

Phaser加载代码

export async function setupMap(scene: Phaser.Scene) {
    const map = scene.make.tilemap({ key: "hexmap" });

    // Dynamically add all tilesets from the map
    const layers: Record<string, Phaser.Tilemaps.TilemapLayer> = {};
    map.tilesets.forEach((ts) => {
        const tileset = map.addTilesetImage(ts.name, ts.name);
        if (!tileset) throw new Error(`Tileset not found: ${ts.name}`);
    });

    // Auto-create layers
    map.layers.forEach((layerData) => {
        const layer = map.createLayer(layerData.name, map.tilesets, 0, 0);
        if (!layer)
            throw new Error(`Failed to create layer: ${layerData.name}`);
        layers[layerData.name] = layer;
    });

    map.layers.forEach((layerData) => {
        const layer = layers[layerData.name];
        layer.forEachTile((tile) => {
            tile.pixelY -= map.hexSideLength / 2;
        });
    });

    scene.cameras.main.setBounds(0, 0, map.widthInPixels, map.heightInPixels);

    return { map, layers };
}

内容的提问来源于stack exchange,提问作者Kam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 01:40:07