Приставки
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
Команда Новости Помощь Ссылки
ПОМОЩЬ
Литература про игры
Предыдущая Следующая

19.1. Класс для работы с двухмерными изображениями

В любой трехмерной игре обязательно применяются двухмерные изображения. Игра «Футбольный стрелок» в этом плане не исключение. Для представления на экране прицела мы будем использовать спрайт, на- рис, 19.1. Изображение рисованный в виде окружности с рисками и вырезан- прицела ным фоном (рис. 19.1).

Для работы с прицелом в проект добавится новый класс Sprite, который мы создали за время работы над двухмерной игрой. Как видите, очень полезно создавать классы с фундаментальным подходом, для того чтобы в дальнейшем эти классы можно было использовать многократно, тем более что с каждой новой игрой этот класс можно усовершенствовать.

19.2. Задаем радиус для мячей

Перейдем на время к классу ModelClass и добавим в его исходный код одну новую переменную radius.

public float radius;

public ModelClass() {

position = new Vector3(0, 0, 0); speed = 15.0f / 60.0f; radius = 8.0f;

}

Как видно из названия переменной, она предназначается для определения радиуса мячиков. Впоследствии для определения пересечения моделей и прицела

Получаем координаты прицела 313

будет использоваться класс BoundingSphere. Этот класс позволяет создавать ограничивающую сферу для моделей, и именно пересечение мушки с этой сферой будет означать, что мячик взят на прицел.

Радиус в восемь единиц для мячика больше, чем это нужно на самом деле, но поскольку мячи постоянно находятся в движении, то попасть в цель будет не так просто. Поэтому мы немного помогаем игроку и увеличиваем зону пересечения прицела и модели.

19.3. Рисуем на экране прицел

Прицел в игре представлен классом Sprite, поэтому нужно объявить и создать объект этого класса, а заодно и не забываем о классе SpriteBatch, который необходим для работы с 2Э-графикой.

SpriteBatch spriteBatch; Sprite cursor;

В конструкторе класса Gamel создаем объект cursor класса Sprite.

cursor = new Sprite();

В методе LoadGraphicsContent() загружаем в программу графическое изображение прицела из каталога проекта и папки Content\Textures.

spriteBatch = new SpriteBatch(graphics.GraphicsDevice); cursor.Load(content, «Content\\Textures\\cursor»);

В методе Draw() после вывода на экран мячей добавляем отрисовку на экране прицела.

spriteBatch.Begin(SpriteBlendMode.AlphaBlend);

cursor.DrawSprite(spriteBatch);

spriteBatch.End();

И в этом месте очень важна очередность вывода графики на экран. Не забываем о том, что все то, что устанавливается для рисования на экране позже в исходном коде программы, соответственно и рисуется позже, поверх предыдущего графического контента.


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

Горяченькое

Друзья

Hosted by uCoz