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

Итак, перейдем к исходному коду класса 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;


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

Горяченькое

Друзья

Hosted by uCoz