Предыдущая Следующая
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();
И в этом месте очень важна очередность вывода графики на экран. Не забываем о том, что все то, что устанавливается для рисования на экране позже в исходном коде программы, соответственно и рисуется позже, поверх предыдущего графического контента. Предыдущая Следующая
|