Формат карты в гоночной игре 2D

У меня мало опыта в написании простых игр на XNA, но сейчас у меня нет известных решений для решения моей проблемы.

Итак, я хочу написать простую гоночную 2d-аркаду, и я не знаю, как я могу сделать карты для этой игры.

Я решил сделать это так:

  1. Я рисую карту-карту в mspaint. Черный - трава, белый - дорога, красный - дорожная разметка, синий - вода, зеленый - лес и т. Д.;

  2. После загрузки изображения я перезаписываю текстуры в XNA - на белый цвет накладываю текстуру дороги, на черный цвет накладываю текстуру травы и т. Д.

Итак, у меня есть 2 вопроса.

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

Извините за действительно плохой английский. И спасибо за ответы заранее.

образец изображения карты

1 ответ

Решение

На форумах MSDN человек с псевдонимом Mad Martin посоветовал сделать следующее:

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

  • Сделайте дорогу сплайном и рассчитайте точный макет игры. Наверное, немного крутой для начинающих, но самый мощный.
  • Сделайте отдельную текстуру, как у вас, всего двумя цветами (черный без дороги, белый путь). Вы можете проверить через координаты автомобилей, находитесь ли вы на дороге или нет. Вы можете сделать это либо на CPU, либо переназначить текстуру в массив с помощью Texture2D.GetData, либо вы можете сделать это на GPU. В любом случае нужно немного повозиться, чтобы ваши машины не зависали на краях дороги.

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

Другие вопросы по тегам