Предыдущая Следующая
Перейдем на время к классу ModelClass и добавим в его исходный код одну новую переменую radius.
public float radius;
public ModelClass()
}
306 Стреляем по целям
Получаем координаты прицела 307
{
position = new Vector3(0, 0, 0); speed = 20.0f / 60.0f; radius = 8.0f;
}
Как видно из названия переменной, она предназначается для определения радиуса мячиков. Впоследствии для определения пересечения моделей и курсора мыши будет использоваться класс BoundingSphere. Этот класс позволяет создавать ограничивающую сферу для моделей игры, и именно пересечение курсора с этой сферой будет означать, что мячик взят на прицел.
Радиус в восемь единиц для мячика больше, чем это нужно на самом деле, но поскольку мячи постоянно находятся в движении, то попасть в цель будет не так просто. Поэтому мы немного помогаем игроку и увеличиваем зону пересечения прицела и модели.
20.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();
И в этом месте очень важна очередность вывода графики на экран. Не забываем о том, что все то, что устанавливается для рисования на экране позже в исходном коде программы, соответственно и рисуется позже, поверх предыдущего всего графического контента.
20.4. Получаем координаты прицела
Основной проблемой в механизме обработки выстрелов по мячам является различие координат в положении на экране двухмерного прицела и трехмерной модели. Как вы знаете, двухмерная плоскость имеет свою систему координат, а трехмерная - свою. У нас в игре одним из основных механизмов игровой логики является обработка выстрелов в мячики, где нам необходимо сопоставлять текущие координаты спрайта с текущими координатами модели. И эти координаты будут абсолютно разными, поскольку системы отсчета у спрайтов и моделей разные. В связи с этим нам нужно создать механизм, который может перенести координаты спрайта в трехмерную плоскость. Предыдущая Следующая
|