Предыдущая Следующая
А для оси Z мы теперь задаем своеобразный коридор от -50 пикселей до 150 пикселей.
ball[i].position.Z = rand.Next(-(rand.Next(0, 50)), rand.Next(0, 150));
Дело в том, что сейчас камера у нас удалилась на целых 250 пикселей по оси Z от всей сцены и мячики на экране (если оставить старые позиции) выводятся далековато и местами даже падают за сам стадион, пропадая из области видимости. Поэтому мы задаем новые значения и приближаем мячи к игроку, а также делаем так, чтобы мячи в основном падали в районе футбольного поля, а не на здания.
Изменение выбора случайных позиций происходит как в методе LoadGra-phicsContent() при начальном запуске игры, так и в ходе игрового процесса в методе MouseClick() (см. листинг21.1).
21.4. Падение мячей на поле стадиона
По сравнению с предыдущим примером стоит несколько увеличить скорость падения мячей, которую мы устанавливали в классе ModelClass.
speed = 25.0f / 60.0f;
Это изменение было сделано после того, как текущий проект был протестирован несколько раз. Как вы помните, к выбору скоростей в играх нужно подходить взвешенно и осторожно. К слову сказать, в игре «Футбольный стрелок» значение скорости задано жестко, но можно производить выбор скорости объекта на экране непосредственно с созданием этого объекта и далее на каждом уровне игры, внося элемент случайности (в последней главе книги мы так и поступим).
В исходном коде класса 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;
}
Целочисленное значение -32 пикселя по оси Y совпадает с поверхностью футбольного поля. Когда мячики по оси Y достигнут -32 пикселя, то они перестают двигаться. Такой простой механизм позволяет создать в игре иллюзию остановки мячей на поверхности футбольного поля.
21.5. Небо и тучи
Задний фон за стадионом в игре закрашивается синим цветом. Сейчас это уже неактуально, и для формирования полноценной сцены необходимо создать небо, тучи и другие элементы пейзажа. Механика представления этих элементов в играх достаточна обширна. Поскольку игра «Футбольный стрелок» имеет статичную камеру и точка просмотра сцены не изменяется, то можно воспользоваться текстурой пейзажа и поставить это изображение за элементами сцены. Предыдущая Следующая
|