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

Перейдем на время к классу 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. Получаем координаты прицела

Основной проблемой в механизме обработки выстрелов по мячам является различие координат в положении на экране двухмерного прицела и трехмерной модели. Как вы знаете, двухмерная плоскость имеет свою систему координат, а трехмерная - свою. У нас в игре одним из основных механизмов игровой логики является обработка выстрелов в мячики, где нам необходимо сопоставлять текущие координаты спрайта с текущими координатами модели. И эти координаты будут абсолютно разными, поскольку системы отсчета у спрайтов и моделей разные. В связи с этим нам нужно создать механизм, который может перенести координаты спрайта в трехмерную плоскость.


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

Горяченькое

Друзья

Hosted by uCoz