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

Phaser 2 CE中map.createFromObjects方法无法使用求助

Phaser 2 CE 中从Tiled对象层生成精灵的解决方案

Phaser 3的createFromObjectsAPI和Phaser 2 CE差异很大,后者的同名方法主要依赖瓦片GID,对无GID的Tiled点对象不友好。针对你的场景(Tiled点对象名称为item,用sprite纹理替换),可以通过手动遍历对象层实现:

实现步骤与代码

  1. 先获取Tiled中的目标对象层
  2. 遍历层内对象,筛选出名称为item的点对象,逐个创建精灵
// 假设map是已加载的Tiled地图对象,game是Phaser.Game实例
var objectLayer = map.objects['Layer_Objects'];

// 遍历对象层内的所有对象
objectLayer.forEach(function(obj) {
    // 只处理名称为'item'的点对象
    if (obj.name === 'item') {
        // 创建精灵:obj/x、obj/y是Tiled中设置的坐标
        var itemSprite = game.add.sprite(obj.x, obj.y, 'sprite');
        // Tiled点对象的坐标默认是中心点,调整精灵锚点匹配
        itemSprite.anchor.set(0.5);
        
        // 可选:将精灵添加到组中统一管理
        // var itemGroup = game.add.group();
        // itemGroup.add(itemSprite);
    }
});

关键说明

  • Phaser 2 CE的createFromObjects仅支持通过GID匹配瓦片对象,而Tiled点对象本身没有GID,因此无法直接用该方法生成精灵
  • 确保Tiled导出的地图JSON中,对象层Layer_Objects的数据被正确包含,加载地图时要指定正确的格式(如Phaser.Tilemap.TILED_JSON)
  • 如果对象有自定义属性,可通过obj.properties.xxx获取并应用到精灵上

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 19:02:39