коллизия тайловой карты в фреймворке Phaser

Я использую Phaser 2.1.3. Я создаю мозаичную карту с помощью Tiled 0.9.1. Есть только один слой по умолчанию и одно изображение набора плиток (4 цветных плитки 32x32). введите здесь описание изображения

Я хочу сделать оранжевую плитку сплошной, игрок не может пройти через такую ​​плитку.

Но в моей игре игрок не может пройти ни через блок оранжевых плиток, ни через блоки красных плиток на сцене. Я не понимаю, почему блок красной плитки сплошной.

Это часть моего кода, полный код здесь: https://github.com/q...sets/js/game.js

var map = this.add.tilemap('map1');
map.addTilesetImage('tileset');
map.setCollisionByExclusion([1]); // set orange tile solid
this.layer1 = map.createLayer('Tile Layer 1');
this.layer1.resizeWorld();
map.setTileIndexCallback(4, this.reachedDoorEvent, this); // when player reached black block, reachedDoorEvent function will invoke.

Вы можете протестировать его здесь: http://qichunren.github.io/game1/index.html перемещайте игрока (конфету) с помощью клавиш со стрелками.

Ошибка фазера или я что-то пропустил?


person qichunren    schedule 20.11.2014    source источник


Ответы (1)


Вы используете map.setCollisionByExclusion. Из документов:

«Устанавливает столкновение для всех плиток в данном слое, кроме идентификаторов тех, которые находятся в заданном массиве. Параметр 'collides' определяет, будет ли столкновение включено (true) или отключено (false)».

(выделено мной)

Если вы хотите, чтобы только оранжевая плитка была сплошной, вы должны использовать map.setCollision.

person PhotonStorm    schedule 20.11.2014
comment
Я ошибочно думал, что идентификатор плитки является индексом набора плиток. Теперь я узнаю, что идентификатор плитки взят из ключа данных слоев в файле плитки json. - person qichunren; 21.11.2014