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
}
Другие вопросы по тегам