Как создать платформы из моих тайловых платформ в Phaser 3, используя физику материи?

Я использую Tiled для создания своих уровней в Phaser 3. У меня есть свой уровень, и платформы загружаются нормально, однако мой игрок проходит через них. Как добавить тела материи на все загруженные платформы?

Код для моих платформ:

        //Create tilemap
        const map = this.make.tilemap({key: 'map'});
        //Create tileset
        const tileset = map.addTilesetImage('Assets_City', 'tiles');
        const platforms = map.createStaticLayer('Ground', tileset, 0, 200);

person Robert Smith    schedule 16.11.2019    source источник
comment
Обязательно ли использовать плитку для создания платформ?   -  person Manuel Abascal    schedule 16.11.2019
comment
Это будет самый простой способ создания уровней для моей игры. Это позволило бы мне спроектировать все мои уровни в мозаичном виде вместо того, чтобы писать весь дополнительный код.   -  person Robert Smith    schedule 16.11.2019
comment
Это слишком расплывчато, чтобы помочь вам вот так. Можете ли вы поделиться своим репо? Таким образом, у меня будет полный контекст для работы, и я помогу вам отладить это.   -  person Manuel Abascal    schedule 16.11.2019
comment
@ManuelAbascal github.com/roberto257/Phaser-Spiderman   -  person Robert Smith    schedule 16.11.2019


Ответы (1)


После строки const platforms = map.createDynamicLayer('Ground', tileset, 0, 0); добавьте следующую строку:

platforms.setCollisionBetween(1, 50);

Для справки:

//Create tilemap
const map = this.make.tilemap({key: 'map'});
//Create tileset
const tileset = map.addTilesetImage('Assets_City', 'tiles');
const platforms = map.createDynamicLayer('Ground', tileset, 0, 0);
platforms.setCollisionBetween(1, 50);

ИЗМЕНИТЬ:

OP не смог запустить мое оригинальное решение, потому что он удалил эти строки по ошибке:

platforms.setCollisionByProperty({ collides: true});
this.matter.world.convertTilemapLayer(platforms);
person Manuel Abascal    schedule 16.11.2019
comment
Что представляют собой значения 1 и 50? Все тайлы пронумерованы 1-50? - person Robert Smith; 16.11.2019
comment
Да, я так думаю: photonstorm.github.io/phaser3-docs/ Phaser.Tilemaps.Tilemap.html - person Manuel Abascal; 17.11.2019
comment
Я попробовал это, никаких ошибок не появилось, однако мой спрайт исчез. Я не уверен, почему, и мне это все еще нужно в игре, и мне нужно, чтобы убедиться, что он сталкивается с платформами. Я отправил свой текущий код на GitHub, где это происходит. - person Robert Smith; 17.11.2019
comment
посмотрю перед сном обязательно - person Manuel Abascal; 17.11.2019
comment
Вы пытались вернуться к своему последнему коду перед последней фиксацией и добавить код, который я вам дал? - person Manuel Abascal; 17.11.2019
comment
да у меня так было изначально - person Robert Smith; 17.11.2019
comment
Перейдите в корневую папку и добавьте: git checkout bd5c2237e4bfbd1c7f5e79fd9213b3baee78d066 измените index.html скрипт на spiderman_game.js файл и добавьте код, который я вам дал. - person Manuel Abascal; 17.11.2019
comment
Я в замешательстве... могу ли я просто использовать интеграцию VS Codes с git и оттуда git checkout? - person Robert Smith; 17.11.2019
comment
Я обычно использую командную строку для github. Но я отредактировал свой ответ, я думаю, вы сможете его получить, если будете следовать моим инструкциям даже с вашей текущей версией кода. - person Manuel Abascal; 17.11.2019
comment
Да, причина, по которой вы не видите спрайт, заключается в том, что ваш index.html связан с вами testgame.js вместо spiderman_game.js - person Manuel Abascal; 17.11.2019
comment
Я исправлю это, когда вернусь домой, не понимаю, почему это не сработает, если это работает с твоей стороны. - person Robert Smith; 17.11.2019
comment
chat.stackoverflow.com/rooms/202499/ @ManuelAbascal не могли бы вы проверить это сообщение? - person Robert Smith; 17.11.2019
comment
Я добавил в чат свою проблему, которую не смог решить. Не могли бы вы быть так любезны, чтобы взглянуть, когда у вас есть шанс. Нет спешки. Спасибо - person Robert Smith; 22.11.2019
comment
@RobertSmith, не могли бы вы создать вопрос по текущей проблеме, с которой вы столкнулись? Продемонстрируйте там все детали и покажите мне код, относящийся к вашей проблеме. - person Manuel Abascal; 24.11.2019
comment
Конечно вещь. Дай мне минуту. Мне нужно будет все правильно объяснить, особенно после всех изменений, которые я сделал прошлой ночью! - person Robert Smith; 24.11.2019
comment
Сделанный. Надеюсь, это достаточно ясно. Если бы не просто комментарий под этим постом. Спасибо - person Robert Smith; 24.11.2019