Как вы обрабатываете неровные плитки при рендеринге плитки?

13

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

Вот что я хочу сделать с моей картой тайлов, в которой я не уверен. Как вы можете видеть, верхние стены намного больше, чем нижние и боковые (это также проблема с моими углами, которые имеют странные формы [больше похожи на L, а не квадрат), а также больше, чем 40x40px, что мои текущие плитки ).

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

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

Я думаю, что могу нарисовать их, используя тот же массив, что и у меня, если я использую ширину и высоту плиток вместо набора WxH? Я не знаю, насколько хорошо это будет работать, но если блоки, которые будут иметь разные значения, будут блоками, на которые игрок / неигровые персонажи не могут наступить, тогда это может не быть проблемой, опять же, я даже не уверен, является ли это жизнеспособным решение.

Мой код на тот случай, если вы хотите увидеть, как я в данный момент обрабатываю его: Map.java (pastebin) (edit: я не обрабатываю его, имел в виду то, как я сейчас делаю карту)

tl; dr - как я могу взять мою 2d выглядящую карту тайлов и изменить ее на плитки разных размеров? или есть лучший способ сделать то, что я пытаюсь сделать? Есть ли название метода, который я должен искать во время поиска в Google?

Задержка
источник

Ответы:

19

Есть два стандартных способа сделать это.

  • Разбейте свои нестандартные размеры плитки на стандартные размеры плитки. Таким образом, эти полосы стен становятся «стопкой» квадратных плиток, которые вы просто знаете, чтобы разместить их вместе в редакторе уровней. Игры, подобные ранним играм Final Fantasy, работали таким образом.
  • Пусть любой кусок плитки будет выше вашей стандартной высоты плитки. Выровняйте плитки по нижней части прямоугольника плитки, чтобы любой дополнительный элемент рисовался выше обычной высоты плитки. Рисуя свою карту, вы рисуете плитки, начиная со спины (квадраты плиток на экране выше) и заканчивая нижними плитками (те, что в нижней части экрана). Это обеспечивает правильное наложение высоких плиток на переднем плане поверх плиток на заднем плане. Обратите внимание, что при таком подходе ваши плитки по-прежнему ограничены одной плиткой по ширине.

Вы можете сделать один или оба из этих подходов. Даже игры, в которых используется подход «разбиваются на стопки плиток», часто позволяют некоторым объектам (деревьям и т. Д.) Преодолевать пределы высоты плиток и просто навязывать порядок рисования карты сверху вниз, чтобы все слои прослеживались. правильно.

Тревор Пауэлл
источник
2
+1 за второй подход. В основном это перемещает вас от карты тайла к объектам на карте.
Кромстер
Отлично, большое спасибо, я думал, что это может быть что-то похожее на второй вариант, но я хотел убедиться, что я делаю это стандартизированным способом. = D
Латентность
2

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

Патрик Хьюз
источник