Phaser 2 CE中map.createFromObjects方法无法使用求助
Phaser 2 CE 中从Tiled对象层生成精灵的解决方案
Phaser 3的createFromObjectsAPI和Phaser 2 CE差异很大,后者的同名方法主要依赖瓦片GID,对无GID的Tiled点对象不友好。针对你的场景(Tiled点对象名称为item,用sprite纹理替换),可以通过手动遍历对象层实现:
实现步骤与代码
- 先获取Tiled中的目标对象层
- 遍历层内对象,筛选出名称为
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
相关产品推荐
相关产品推荐

