Гравитация

В Blender Game Engine для каждой сцены можно установить свою гравитацию. Это позволяет в одной игре создавать разные "физические" миры. По умолчанию задано значение в 9.8, что соответствует силе тяжести на Земле.

Установка гравитации для сцены

В этом уроке создадим Blender-проект, в котором сравним поведение тел и воздействие сил в условиях Земли и Луны. Для наглядности будем использовать режимы Add Background Scene или Add Overlay Scene активатора Scene.

Режимы сцены

Эти режимы позволяют располагать одну сцену за текущей или впереди текущей, той, для которой устанавливается активатор. Однако, если, например, объекты одной сцены сместить влево, а объекты другой – вправо, то получится как бы одна сцена с разными физическими свойствами на разных половинах.

Создадим на сцене мяч, к которому прикладываются силы с разных сторон с помощью стрелок клавиатуры, а также сила, направленная вверх, при нажатии пробела. Также добавим тела Rigid Body разной массы.

Подготовка сцены для игры

Логика мяча

Создадим полную копию сцены (см. предыдущий урок). На одной все объекты сдвинем влево, на другой – вправо. Для одной оставим гравитацию без изменений. Для другой – установим гравитационную константу Луны, которая равна 1.62.

Теперь привяжем к камере первой, земной, сцены активатор Scene в режиме Add Background Scene и укажем в качестве фоновой сцену Луны.

Добавление фоновой сцены

В итоге при запуске игрового движка нажатие клавиш будет заставлять мячи двигаться и толкать тела на обоих сценах. Однако результат будет отличаться. Так, если на земной сцене при нажатии пробела мяч не сильно поднимается вверх, то на лунной он просто улетает. Причина тому – разная сила тяжести.

Две сцены в режиме игры

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

Ниже показана только логика переключения активности с одной сцены на другую. В Blender Game Engine, если сцена приостановлена, то по какой-то причине ее можно запустить только с другой сцены, которая активна. Таким образом, для настраивания более сложной логики потребовалась бы третья пустая сцена, с которой осуществлялось бы управление двумя другими, которые были бы наложены на управляющую в качестве фоновой и оверлейной.

Логические блоки камеры первой сцены (первая связка была описана выше):

Логика переключения приостановки и возобновления сцен на первой сцене

Логические блоки камеры второй сцены:

Логика переключения приостановки и возобновления сцен на второй сцене

При запуске игры лунная сцена приостановлена. При нажатии M лунная начинает проигрываться, в то время как земная останавливается. При нажатии E происходит обратное – лунная останавливается, земная возобновляется.

Практическая работа

Создайте blender-проект, в котором объекты на заднем плане парят в невесомости. В то время как на переднем действует сила тяжести Земли.

Создано

Обновлено