Предыдущая Следующая
Итак, перейдем к исходному коду класса Gamel проекта Plane и в области глобальных переменных объявим объект stadium класса ModelClass.
private ModelClass stadium;
Затем в конструкторе класса Gamel или в методе Initialize() создаем новый объект stadium.
stadium = new ModelClass();
Переходим к телу метода LoadGraphicsContent() и, используя стандартные механизмы, загружаем в игру модель.
stadium.Load(content, «Content\\Models\\stadium
В этом же методе выбираем позицию для стадиона на экране телевизора.
stadium.position = new Vector3(0, 0, 0);
Стадион мы ставим на экран в нулевые координаты, а за счет удаления камеры от центра экрана (см. раздел 20.1) получаем хороший ракурс просмотра всей трехмерной сцены.
326 Формируем трехмерную сцену
Последние установки, связанные с выводом стадиона на экран, происходят в методе Draw().
world = Matrix.CreateTranslation(stadium.position); stadium.DrawModel(world, view, proj);
Здесь все установки стандартны, а значения матрицы вида и матрицы проекции общие как для мячей, так и для стадиона. Если сейчас запустить проект, то на экране телевизора вы увидите стадион и падающие сверху мячики (рис. 20.2), но прежде нам необходимо сделать еще несколько изменений и нововведений, чтобы трехмерная сцена стала ярче и интереснее.
20.3. Падение мячей на поле стадиона
Как вы помните, к выбору скоростей в играх нужно подходить взвешенно и осторожно. К слову сказать, в игре «Футбольный стрелок» значение скорости задано жестко, но можно производить выбор скорости объекта на экране непосредственно с созданием этого объекта и далее на каждом уровне игры, внося элемент случайности (в последней главе книги мы так и поступим).
Падение мячей на поле стадиона 327
Рис. 20.2. Стадион в игре
В исходном коде класса Gamel и методе MoveBall() на этой стадии нас ждут небольшие изменения, которые выглядят следующим образом:
void MoveBall()
{
for (int i = 0; ball.Length > i;
{
if (ball[i].position.Y < -32)
{
ball[i].position.Y = ball[i].position.Y;
}
else
{
ball[i].position.Y -= ball[i].speed;
}
}
}
Мячики в игре, падая сверху вниз, должны в определенный промежуток времени коснуться поверхности поля. Определять пересечение поля стадиона и мячей можно по-разному. Самый простой способ - это выбор числового значения (в данном случае по оси Y), достигнув которого мячи просто останавливаются.
if (ball[i].position.Y < -32)
{
ball[i].position.Y = ball[i].position.Y; Предыдущая Следующая
|