Как я могу превратить файл изображения игровой карты в границы моей программы? - PullRequest
0 голосов
/ 26 сентября 2008

У меня есть изображение базовой игровой карты. Думайте об этом как о горизонтальных и вертикальных стенах, которые невозможно пересечь. Как я могу легко перейти от png-изображения стен к чему-то в коде?

Сложный путь довольно прост ... просто если я поменяю карту изображений, я бы хотел простой способ перевести это в код.

Спасибо!

edit: карта не основана на тайлах. Это сверху вниз 2D.

Ответы [ 5 ]

1 голос
/ 26 сентября 2008

Я увлекаюсь видеоиграми, и лично мне не хотелось бы хлопот с проверкой границ картинок на карте. Разве не было бы чище, если бы эти стены были объектами, которые, как оказалось, имели свойство изображения (или что-то подобное)? Изображение будет отображаться, но объект будет иметь четко определенные координаты, и функция может решить, попадал ли объект каждый раз, когда игрок двигался.

1 голос
/ 26 сентября 2008

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

1 голос
/ 26 сентября 2008

Мне нужно больше деталей.

Основана ли ваша игровая плитка? Это 3d?

Если на основе его мозаики, вы можете уменьшить изображение до разрешения, а затем выполнить преобразование 1: 1 с каждым пикселем, представляющим плитку.

0 голосов
/ 26 сентября 2008

Ну, я вижу два случая с двумя разными «лучшими решениями» в зависимости от того, откуда взялась ваша графика:

  1. Ваша графика выложена мозаикой, и, таким образом, вы можете легко «распознать» блок, поскольку он использует ту же графику, что и другие блоки, и все, что вам нужно будет сделать, это программа, которая при наличии списка «блокирующих листов "и карта может создать" карту столкновений ", сравнивая каждую плитку с плитками в" списке блокировки ".

  2. Ваша графика - это просто некоторая графика (например, это может быть картинка или графика CG), и вы не ожидаете, что пиксели для блока будут такими же, как пиксели из другого блока. Вы все еще можете попытаться применить алгоритм «обнаружения краев» к своему изображению, но я предполагаю, что вам лучше разделить свое изображение на слой BG и слой FG, чтобы слой FG имел предопределенный цвет (или альфа-канал). = 0) и проверьте пиксели по этому цвету, чтобы определить, блокируются ли объекты или нет.

  3. У вас не так много блокирующих фигур, но они обычно являются сложными (полигоны, эллипсы) и их было бы неэффективно визуализировать с использованием растрового изображения мира или упаковать в качестве «атрибутов плитки». Например, это обычно относится к приключенческим играм типа «укажи и щелкни». В этом случае вы, вероятно, создадите путь, который соответствует вашим границам, с помощью программы векторного рисования и найдите библиотеку, которая выполняет пересечение полигонов или столкновения Безье.

Удачи и веселья.

0 голосов
/ 26 сентября 2008

Если вам не нужно ничего предварительно вычислять, используя информацию о карте. Вы можете просто проверить логику времени выполнения, используя функцию, подобную getPixel (x, y).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...