Phaser - как выбрать слой мозаичной карты и установить его в качестве слоя столкновения
Я совершенно новичок в использовании Phaser и редактора карт Tiled, и в настоящее время я делаю платформерную игру, используя карту Tiled, которую я создал. Мне не удалось найти какую-либо информацию в документации по Tiled или Phaser, а также в руководствах или на форумах о том, как выбрать слой на моей Tiled-карте в качестве слоя столкновения. В некоторых уроках я видел, как люди устанавливали свойство слоя Tiled на столкновение: правда, но я думаю, что они использовали другую версию Tiled, и я не вижу никакой информации об этом в документации Tiled.
У меня есть 3 слоя плюс один слой для объектов. Я поместил все плитки столкновений в один слой, который включает в себя такие вещи, как земля и платформы. Я прочитал ответы о том, что вам нужно включить индекс плиток столкновений, но я не хочу включать отдельные плитки, так как там используется много плиток. Я включил снимок экрана с моим файлом JSON Tiled map, слой, который я хочу создать, называется "Tile Layer 2". Я не уверен, нужно ли мне упоминать это имя слоя в моем коде Phaser, чтобы сделать его слоем столкновения, или мне нужно установить слой на столкновение:true в Tiled. Буду очень признателен за любые предложения о том, как сделать этот слой коллизий, используя Tiled или Phaser. Благодарю.
2 ответа
Другой возможностью является использование этого плагина Phaser: https://www.npmjs.com/package/phaser-tilemap-plus
Вы можете настроить слой объекта с многоугольными и прямоугольными формами и использовать его в качестве слоя столкновения. Полигоны могут быть любой формы, что позволяет использовать наклонные и изогнутые плитки. Вы также можете иметь односторонние формы для прыжков через платформы или односторонние двери. Также возможно установить значение отскока для надувных поверхностей или пружин а-ля Соник.
Помимо расширенного столкновения плиток, вы также получаете анимации плиток, которые вы определяете в редакторе плиточных карт, обработку событий столкновения и региона, а также доступ к метаданным в виде пользовательских свойств.
Я прокомментировал, но думал, что ID дает немного больше полного ответа. я использую P2
физика, если вы используете Arcade, это может не применяться, должно быть, большинство примеров на сайте Phaser предполагают использование Arcade.
Поэтому, как только вы создали свою плитку в Tiled, вы загружаете в нее JSON и изображение набора плиток в preload
метод:
game.load.tilemap('levelOneData', 'assets/levels/levelOne.json', null, Phaser.Tilemap.TILED_JSON);
game.load.image('levelOneImage', 'assets/pics/levelOne.png');
Тогда в вашем create
Загрузите ваше изображение набора тайлов и установите ваши столкновения со слоями.
levelMap = game.add.tilemap('levelOneData');
slowLayerBodies = game.physics.p2.convertCollisionObjects(levelMap, "collide", true);
//add background image and set world size
background = game.add.tileSprite(0, 0, 4040, 2880, 'levelOneImage');
Я не специалист по Phaser, все еще учусь сам, однако это работает. Скорее всего (как и в большинстве случаев, построенных на JavaScript) другой способ сделать это.