Tilemap из Tiled не отображается в Phaser

Я застрял в колее с этой игрой, которую я пытаюсь сделать. Карта тайлов, которую я пытаюсь использовать, имеет следующую ошибку:

Error 1: "Phaser.Tileset - image tile area is not an even multiple of tile size"
Error 2: "Uncaught TypeError: Cannot read property '2' of undefined"
Error 3: "Uncaught TypeError: Cannot read property 'type' of undefined"2

Вот ссылка на код, который я использую. http://pastebin.com/Dv00KGii


person Omar Nooristani    schedule 06.08.2015    source источник
comment
Добро пожаловать в СО! Пожалуйста, опубликуйте код, который вы пробовали, чтобы мы могли помочь вам с указанными проблемами. См. страницу Как задать вопрос, чтобы получить помощь в улучшении вашего вопроса.   -  person Madness    schedule 07.08.2015
comment
Спасибо за приветствие и подсказку, так и сделаю.   -  person Omar Nooristani    schedule 07.08.2015
comment
Как только редактирование будет внесено, снова отправьте мне сообщение в комментариях, и я смогу проголосовать за это. Вы уже показываете участие сообщества, отвечая, это отлично! Участие - ключ к успеху здесь!   -  person Madness    schedule 07.08.2015
comment
Спасибо, но я не могу поместить здесь весь код, так как он ограничен из-за пробела в символах. В моем коде превышен лимит символов, так как общее количество символов составляет около 4400. Какие-нибудь советы для меня?   -  person Omar Nooristani    schedule 07.08.2015
comment
Что ж, попробуйте опубликовать некоторый код, относящийся к этой ошибке, я имею в виду, что все это не может быть подозрительным, не так ли? Но вы должны иметь возможность использовать pastebin.com — вставьте свой код, дайте вставке имя и нажмите «Отправить». Это даст вам уникальный URL-адрес, который вы можете опубликовать здесь.   -  person Madness    schedule 07.08.2015
comment
@Madness Спасибо, хорошо, я исправляю это сейчас.   -  person Omar Nooristani    schedule 07.08.2015


Ответы (4)


Попробуйте встроить набор тайлов в карту тайлов. Для меня это исправило эту ошибку: Uncaught TypeError: Cannot read property '2' of undefined"

person Glogo    schedule 04.06.2017

В редакторе тайловых карт вам необходимо убедиться, что все изображения наборов тайлов, которые вы используете, встроены в файл проекта tilemap .tmx. Если какое-либо из изображений набора фрагментов включено как внешнее .tsx, а не встроенное изображение, тогда будет выдана ошибка Uncaught TypeError: Cannot read property '2' of undefined" при попытке импортировать в Phaser экспортированный файл JSON из редактора тайловых карт.

Если вы забыли вставить его в начале, это не проблема, вы всегда можете сделать это позже. Редактор имеет удобную иконку, чтобы сделать это легко:

введите здесь описание изображения

Чтобы узнать, есть ли у вас какие-либо внешние наборы листов, которые вызывают эту ошибку, проверьте, содержат ли экспортированные JSON-файлы карты листов ссылки на файлы .tsx.

person Adam M.    schedule 19.04.2020

Ошибка, о которой сообщает Phaser, следующая:

"область плитки изображения не кратна размеру плитки"

Таким образом, очевидно, что Phaser требует, чтобы размер изображения набора тайлов был кратен размеру вашего тайла. Сама плитка не требует этого, но если вы используете Phaser, вам, вероятно, следует убедиться, что в изображении набора плиток нет лишнего места.

person Thorbjørn Lindeijer    schedule 06.08.2015
comment
Ок, попробую тайлы настроить и папку заменю. спасибо за вклад, я очень новичок в этом, и я хотел бы, чтобы это был мой первый завершенный проект. Я доложу обо всем. - person Omar Nooristani; 07.08.2015
comment
Я не понимаю, если я покрою всю область тайлами, можно ли назначить прозрачность определенным тайлам с их конкретным id? Мне нужно, чтобы некоторые плитки были твердыми, а другие — проходными для рабочей игры. - person Omar Nooristani; 07.08.2015
comment
Я полагаю, что речь идет не о том, прозрачна плитка или нет, а, например, о том, делится ли ширина набора плиток на ширину плитки. - person Thorbjørn Lindeijer; 08.08.2015
comment
@ ThorbjørnLindeijer Здравствуйте, у меня тоже такая проблема. Не могли бы вы объяснить, что это значит? Размер моего тайла 32 на 32 пикселя, высота карты 6 и ширина 48. В Phaser моя карта отображается так new Phaser.Game(768, 384..., которые оба кратны 32? Что мне не хватает? - person Summer Developer; 23.01.2016
comment
@ ThorbjørnLindeijer Если вы говорите размер изображения набора плиток, это означает каждую плитку или весь файл? - person Summer Developer; 23.01.2016
comment
@SummerDeveloper Изображение набора плиток — это все изображение, обычно содержащее несколько плиток в сетке. Сообщение об ошибке предполагает, что размеры этого изображения должны быть кратны размерам плитки. Таким образом, если ваши плитки имеют размер 32x32, пример допустимого размера изображения набора плиток будет 64x128, поскольку это означает, что он содержит плитки 2x4, которые являются четными числами. - person Thorbjørn Lindeijer; 24.01.2016

Это случилось и со мной. Я обнаружил, что мое изображение png, которое я загружал, было 1280x720.

В примере на веб-сайте Phaser предлагается загрузить карту тайлов, как показано ниже.

map = game.add.tilemap('mario');

Документация по функции tilemap находится здесь. Функция принимает другие параметры, такие как размеры плитки. В моем случае 32x32 по умолчанию недопустимо, потому что 720/32 = 22.5. Это число должно быть круглым. Поэтому я просто обрезал свое изображение до 32*22 = 704. Затем Phaser смог загрузить png с настройками тайловой карты по умолчанию. Таким образом, будет работать значение по умолчанию 32x32, в противном случае вы можете изменить настройку высоты на 10, поскольку 720 делится на 10. В этом случае Phaser не должен выдавать ошибку. В моем случае я изменил размер своего изображения, потому что все другие изображения плитки, которые я использовал, были 32x32, поэтому было легче быть последовательным.

Также при создании tilemap json лучше всего, если tileheight и tilewidth кратны вашему изображению и настройкам.

person earlonrails    schedule 08.05.2017