如何在 Phaser 游戏中向每个用户显示不同的地图

How to show a different map to each user in a Phaser game

我正在开发一个应用程序(平台),我有 10 个用户(也许这会随着时间的推移而增加)。我已经创建了一个登录页面并使用平铺(phaser 框架)创建了一张地图。但是这张地图现在对所有用户都是一样的,我想要的是为每个用户创建一个单独的地图,并且在登录后可见。请给我一些建议,这样至少我可以尝试一下。或者给我一些关于这个实现的想法。

以下代码用于瓦片地图解析。

var game = new Phaser.Game(450, 300, Phaser.CANVAS, 'phaser', { preload: preload, create: create, update: update, render: render });

function preload() {
    game.load.tilemap('map', '../tileMap/background.json', null, Phaser.Tilemap.TILED_JSON);
    game.load.image('tile2', '../tileMap/floor2.png');
    game.load.image('player','../tileMap/bot2.png');
}

var map;
var layer;

function create() {
    map = game.add.tilemap('map');
    map.addTilesetImage('floor2','tile2');
    layer = map.createLayer('Tile Layer 1');
    layer.resizeWorld();
}

问题是,如果每个人在登录后都被重定向到同一页面,那么所有用户都会看到位于“../tileMap/background.json”下的同一张地图。

解决方案是以某种方式将地图与用户连接起来,例如您可以创建这样的数组:

var maps= {};
maps['bob'] = '../tileMap/backgroundBob.json';
maps['joe'] = '../tileMap/backgroundJoe.json';

然后你可以为 tilemapPath 创建全局变量(但肯定有更好的方法,也许在初始化移相器时使用来自 cookie 的登录值)并在对用户进行身份验证后执行如下操作:

tilemapPath = maps[login];

并加载瓦片地图:

game.load.tilemap('map',tilemapPath, null, Phaser.Tilemap.TILED_JSON);

希望对你有所帮助。