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

时间:2016-10-07 12:08:23

标签: javascript phaser-framework tiled

我正在开发一个应用程序(平台),我有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();
}

1 个答案:

答案 0 :(得分:1)

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

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

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

然后你可以为tilemapPath创建全局变量(但是它有更好的方法,可能是使用来自cookie的登录值),并且在验证用户之后执行以下操作:

tilemapPath = maps[login];

使用以下方法加载tilemap:

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

希望它能为你提供帮助。