Конгер Д.
Физика для разработчиков компьютерных игр
стр. 441

Полет без моделирования физики

Для написания простейших авиасимуляторов физика не нужна вовсе. Все, что нужно, — это программа, в которой точка, откуда вы видите окружающие объекты, перемещается соответственно передвижению самолета. Добавьте симпатичный окружающий мир и правдоподобное управление - и игра готова. Именно так создавались авиасимуляторы в течение многих лет.

С помощью Direct3D написать такой авиасимулятор чрезвычайно просто. Платформа физического моделирования, описанная в этой книге, еще больше облегчает его написание. В главе 14 «Готовимся создавать игры» мы уже рассматривали программу, в которой камера двигалась над ландшафтом. Можно написать авиасимулятор, взяв эту программу в качестве основы. При этом физика нам не понадобится.

СОЗДАНИЕ ПРОСТОГО АВИАСИМУЛЯТОРА

Чтобы заложить основу для моделирования физических законов, которые мы рассмотрим далее, давайте создадим авиасимулятор, использующий минимум физики. В этом авиасимуляторе используется вид со стороны, то есть игрок будет видеть самолет, которым управляет.

КЛАСС BASIC_FLYER

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

Замечание

Код класса basic_flyer есть на прилагающемся к книге компакт-диске.

Он находится в файлах FMBasicFlyer .h и PMBasicFlyer. срр в папке Source\Chapter16\BasicFlyer.

Класс basic_flyer является производным от класса rigid_body. Добавленные в нем элементы данных предназначены для выполнения маневров. Они задают начальную ориентацию самолета и его крен, тангаж и рыскание.

Предупреждение

Программа должна задать значения private-элементов данных initialForwardDirection и initialUpDirection после загрузки сетчатой модели, прежде чем начинать выполнять ее преобразования. Класс basic_ flyer должен знать начальную ориентацию сетчатой модели при ее загрузке, чтобы он смог правильно ее ориентировать в полете.



Новости
Косплей Сенуя из Hellblade: Senua’s Sacrifice
Редакция Геймбокса не могла не поделиться с вами прекрасным отечественным косплеем на Сенуя из Hellblade: Senua's Sacrifice.
Bethesda подала в суд на Warner Bros. за Westworld
Как утверждает издание TMZ, компания Bethesda Softworks подала в суд на кинокомпанию Warner Bros. и студию Behaviour Interactive.