Взаимодействие объектов в Blender Game Engine. Урок 4

модель в Blender Game Engine

Игровой движок Blender’а позволяет виртуальным объектам вести себя подобно объектам реального мира. Следовательно, результат взаимодействия объектов Dynamic, Rigid и Soft body в Blender Game Engine должен зависеть от настроек их массы, а также сил, влияющих на них. Рассмотрим это на примере.
У нас будет стена из кирпичей и шар, разбивающий ее. По отношению к шару можно будет прикладывать разную силу. В зависимости от приложенной силы шар может разрушать стену или нет.

Стена состоит из кирпичей, каждый из которых представляет собой измененный куб типа Rigid body. При взаимодействии объектов важно настроить свойство Bounds (границы). В данном случае лучше использовать тип Convex hull (выпуклая оболочка).

Настройка границ объектов для игрового режима Blender

С помощью дублирования (Shift + D) создаем стену из кирпичей. Здесь важно плотно подогнать один к другому. В режиме игры стена должна оставаться целой, а не разваливаться. Последнее может случиться, если неправильно настроены границы объектов или кирпичи неправильно расположены относительно друг друга.

Стена из блоков в Blender

Добавляем на сцену сферу, устанавливаем для нее также тип Rigid body и располагаем на некотором расстоянии от стены. При нажатии на клавишу с цифрой 1 на клавиатуре шар должен двигаться в направлении стены в результате приложения к нему силы. Следует выключить кнопку L.

Настройка сенсора, контроллера и активатора

Сила при нажатии на клавишу с единицей постоянно воздействует на шар. Чем дольше мы жмем, тем больше сила воздействия. На самом деле трудно определить, сколько силы было передано шару. Так может оказаться, что при воздействии меньшей силы, но на протяжении большего времени, шару суммарно было сообщено больше воздействия, чем при моментальном воздействии большей силы. Чтобы избежать недоразумений, в Blender Game Engine можно сделать так, что шару будет сообщаться сила только тогда, когда он находится в определенном месте или в течение строго определенного временного интервала.
Наша сфера будет испытывать воздействие силы лишь тогда, когда касается красной маленькой плоскости. Для этого нужно добавить к сфере сенсор Touch (касание) и связать его с уже существующим контроллером. В поле MA следует прописать материал, при касании которого будет срабатывать сенсор Touch. Имя материала можно найти на панели кнопок Shading (F5).

Настройка сенсора touch

Два сенсора связаны с одним контроллером типа AND. Это означает, что активатор сработает лишь в том случае, если сигнал будет поступать от обоих сенсоров. В данном случае, должна быть зажата клавиша с единицей и объект должен касаться материала start. Если зажата единица, но нет касания start (или, наоборот, есть касание, но нет сигнала с клавиатуры), то активатор не будет запускаться.
Шар должен находиться над красной плоскостью. В режиме игры к шару будет прикладываться сила лишь в момент его нахождения на плоскости, а не на протяжении всего пути (при зажатой клавише 1). В дальнейшем это позволит трезво оценить, как влияет размер приложенной к шару силы на его способность разрушать стену.
Добавим также еще два комплекта сенсоров, контроллеров и активаторов. Настроим их также как и первый, за исключением величины прикладываемой силы и клавиш-сенсоров. Может быть один сенсор Touch, связанный с несколькими контроллерами. Также неплохо было бы добавить возможность перезагрузки без выхода из режима игры: активатор Scene –> Restart.

Настройка сенсора touch

Требуется установить такие величины силы, чтобы в первом случае стена почти не разрушалась, а во втором – разрушалась меньше, чем в третьем.
На примере этой модели видно, что скорость шара (и как следствие его разрушающая способность) зависит от величин приложенной к нему силы. Эта зависимость есть в реальном мире, к которому мы привыкли, она эмулируется и в Blender Game Engine.

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

  1. Создайте модель, описанную в уроке.
  2. Определите с помощью BGE, как влияет расстояние между шаром и стеной на разрушение последней. С чем это связано?
  3. Создайте модель известной физической закономерности: рычаг уравновешен, когда произведение массы на длину одного плеча равно произведению массы на длину другого плеча. В модели должна быть возможность передвигать виртуальные массы (например, кубики) по бревну, добиваясь равновесия.

А как сделать разбивающийся

А как сделать разбивающийся стакан к примеру....Это надо создавать стакан из осколков связанных между собой ? Или есть способ попроще в блендере.

Скорее всего смотреть надо в

Скорее всего смотреть надо в сторону "физики объектов":
b3d.mezon.ru/index.php/Blender_Basics_3-rd_edition/Chapter_18-_Object_Physics