Phaser.io - загрузка объектов из Tiled
Я новичок в 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()
"звонки. Единственный, кто столкнулся, - это слой земли.
Теперь, в моем файле Tiled, я создал слой объектов и нарисовал маленькие прямоугольники в областях, в которых я хочу проверить, находится ли игрок. Я думал, что это будет простой процесс, но я не могу понять, как загрузить эти области в Phaser, а затем проверить, находится ли игрок в пределах границ.
Поиск в Google дал мне некоторые результаты, но ни один из них не подходит, так как они обычно охватывают, как добавить спрайт к объекту, что в данном случае неприменимо.
Мне просто нужно, чтобы эта маленькая область существовала и проверила, есть ли там игрок. Я также дал имена каждому из этих прямоугольников в Tiled через вкладку пользовательских свойств.
1 ответ
Я бы попробовал использовать прозрачное изображение в качестве области, которую вы хотите проверить, если ваш спрайт закончился и использовать
if(sprite1.overlap(transparentImage)){
//do something
}