Приставки
Nintendo (Dendy)
Nintendo 64
Sega Genesis
Sega CD / 32x
Master System
Super Nintendo
Turbo Grafx 16
Sega Saturn
Sony PlayStation
GameBoy Advance
GameBoy / Color
Game Gear
Atari
Другие

Утилиты
Системные утилиты
GoodXXXX
Sega CD / 32x
Nintendo 64
Переводы, хакинг
Музыка

Мир приставочных игр

Версия 2.00a

Leonis © 2002-2009
Команда Новости Помощь Ссылки
ПОМОЩЬ
Литература про игры
Предыдущая Следующая

322 Формируем трехмерную сцену

Небо и тучи 323

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

Текстура пейзажа была взята с сайта Turbosquid.com. Это графическое изображение в формате JPG распространяется бесплатно. Пейзаж создан художником под именем Hal9000 (рис. 21.3).

Рис. 21.3. Страница изображения hallake001 на сайте Turbosquid.com

Графическое изображение этого пейзажа оказалось очень большим по ширине (3000 пикселей), поэтому пришлось обрезать его по бокам, укоротив изображение по ширине до 1500 пикселей. Связано это с тем, что некоторые видеокарты не в силах загрузить слишком большой по размеру (ширина или высота) графический файл. Если у вас при запуске программ возникает сообщение подобного характера, то эта проблема состоит в мощности видеоадаптера, и вам необходимо либо подкупить новую видеокарту (что дороже), либо уменьшить размер изображения (что дешевле).

Для добавления фона в игру объявим новую переменную background.

private Texture2D background;

Изображение фона статично, поэтому можно обойтись и без объекта класса Sprite. После объявления объекта background в методе LoadGraphics-Content() загружаем пейзаж в игру.

background = content.Load<Texture2D>("Content\\Textures\\hallake0 01");

А затем в методе Draw() рисуем его на экране монитора.

spriteBatch.Begin(SpriteBlendMode.AlphaBlend);

spriteBatch.Draw(background, new Vector2(0, -50), Color.White); spriteBatch.End();

При этом само изображение фона мы рисуем самым первым, не забывайте, что каждый последующий рисуемый элемент графики всегда накладывается поверх предыдущего!

Изображение hallake0 01 по высоте равно 500 пикселям. По оси Y мы сместили изображение вверх на 50 пикселей. Сделано это просто для красоты. То есть после того как изображение было загружено, а игра запущена на компьютере, я просто подобрал оптимальное местоположение фона, исходя из общей картинки на экране, и не более того.

В листинге 21.1 вы найдете полный исходный код текущего примера, где все нововведения выделены жирным шрифтом. Сам проект располагается на компакт-диске в папке Code\Chapter21\Plane.


Предыдущая Следующая

Горяченькое

Друзья

Hosted by uCoz