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

А для оси 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. Небо и тучи

Задний фон за стадионом в игре закрашивается синим цветом. Сейчас это уже неактуально, и для формирования полноценной сцены необходимо создать небо, тучи и другие элементы пейзажа. Механика представления этих элементов в играх достаточна обширна. Поскольку игра «Футбольный стрелок» имеет статичную камеру и точка просмотра сцены не изменяется, то можно воспользоваться текстурой пейзажа и поставить это изображение за элементами сцены.


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

Горяченькое

Друзья

Hosted by uCoz