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

Подсказка

Если вы хотите, чтобы в вашей игре автомобили кренились, проходя повороты, вам придется переопределить методы CurrentCarDirection() и Update() в вашем производном классе автомобиля. Новые версии этих методов должны выполнять вращение в трехмерном пространстве, а не на плоскости.

Завершив создание двумерной матрицы вращения, метод CurrentCarDirection () создает двумерный вектор (в строках 48-52). В этом векторе хранится начальная ориентация автомобиля. Заметьте, что, поскольку автомобиль двигается в плоскости xz, в компоненте х вектора хранится компонент х направления, а в компоненте у вектора - компонент z направления.

В строках 55-56 листинга 15.2 метод CurrentCarDirection () умножает двумерный вектор на двумерную матрицу вращения. Результаты умножения он сохраняет в трехмерном векторе в строках 59-63. Метод завершается, возвращая этот трехмерный вектор.

Далее в листинге 15.2 приведен код метода Update (). Первая задача, которую выполняет этот метод — вызывает метод CurrentCarDirection (), чтобы получить текущую ориентацию автомобиля. Затем он нормализует вектор. Вспомните, что сила, прикладываемая к автомобилю ведущими колесами, направлена всегда вдоль оси z. Если автомобиль тормозит, то сила прикладывается в обратном направлении. Это позволяет программе разгонять и тормозить моделируемый автомобиль так же, как обычный автомобиль. Однако это значит, что метод Update () должен направлять силу, прикладываемую к автомобилю ведущими колесами, в направлении движения автомобиля. Кроме того, метод Update () должен знать текущую ориентацию автомобиля, чтобы правильно его разворачивать. Чтобы выполнить эти операции, метод Update () сначала вычисляет ориентацию автомобиля.

Если автомобиль движется и разворачивается, метод Update () поворачивает его на нужный угол в строках 93-99 листинга 15.2. Чтобы сделать это, он добавляет угол поворота к текущей ориентации. Поскольку крен автомобиля не моделируется, вращение выполняется только вокруг оси у.

Метод Update () прикладывает к автомобилю усилие от ведущих колес в строке 110. Он направляет это усилие в направлении движения автомобиля в строках 111-113. Поскольку это простейшая модель автомобиля, в ней усилия не прикладываются в точках соприкосновения колес с землей. Вместо этого это усилие прикладывается к центру масс автомобиля. Этот прием работает достаточно хорошо во многих играх.

Сила, прикладываемая к автомобилю ведущими колесами, — это импульсная сила. Она не является постоянно действующей, поскольку автомобиль может разгоняться или тормозиться с течением времени. Метод Update () сохраняет характеристики этой силы в строках 115-120.

В методе Update () демонстрируется простой метод вычисления сопротивления воздуха в строках 130-134 листинга 15.2. В строке 140 метода



Новости
Valvе временно перестала пропускать в Steam игры для взрослых
Разработчики визуальной новеллы Shining Song Starnova из небольшой студии Love in Space назвали причину, по которой Valve не пропустила игру в Steam.
В Саудовской Аравии запретили 47 игр из-за смерти детей
Издания AP и THR утверждают, что запрет видеоигр стал ответом на недавно произошедшее в Саудовской Аравии самоубийство двух детей, которое власти связывают с печально известной социальной онлайн-игрой «Синий кит».