【发布时间】:2016-04-01 08:37:21
【问题描述】:
我是 Phaser 的新手,在过去的几天里,我一直在尝试制作一款非常简单的平台游戏风格的游戏,玩家必须先导航到某些区域才能退出关卡。
我已经完成了基本操作,但现在我似乎不知道如何检查玩家是否在这些区域。
目前相关部分代码如下:
var game = new Phaser.Game(800, 600, Phaser.AUTO, "mygame", {
preload: preload,
create: create,
update: update,
render: render
});
function preload() {
game.load.tilemap("questMap", "assets/quest.json", null, Phaser.Tilemap.TILED_JSON);
game.load.image("tilesheet", "assets/tilesheet.png");
game.load.image("npc", "assets/npc.png");
game.load.spritesheet("player", "assets/player.png", 64, 64);
}
var map;
var tileset;
var groundBg;
var props;
var houses;
var houseProps;
var npc;
var ground;
var areas;
var player;
function create() {
game.physics.startSystem(Phaser.Physics.ARCADE);
game.stage.backgroundColor = "#A8DBFF";
map = game.add.tilemap("questMap");
map.addTilesetImage("tilesheet");
map.addTilesetImage("npc");
ground = map.createLayer("ground");
groundBg = map.createLayer("groundbg");
props = map.createLayer("props");
houses = map.createLayer("houses");
houseProps = map.createLayer("houseprops");
npc = map.createLayer("npc");
map.setCollisionBetween(1, 5000);
ground.resizeWorld();
不太漂亮,我知道。
我用平铺创建了地图,并且有很多小道具和装饰瓷砖,因此有多个“map.createLayer()”调用。唯一有碰撞的是ground layer。
现在,在我的 Tiled 文件中,我创建了一个对象图层并在我想检查玩家是否在其中的区域上绘制了小矩形。我认为这将是一个简单的过程,但我似乎无法弄清楚如何将这些区域加载到 Phaser 中,然后检查玩家是否在边界内。
谷歌搜索给了我一些结果,但似乎没有一个适合,因为它们通常涉及如何将精灵添加到对象,在这种情况下不适用。
我只需要那个小区域存在并检查玩家是否在那里。我还通过自定义属性选项卡为 Tiled 中的每个矩形命名。
【问题讨论】: