Найти тему
HD4E Games

Java Script. WADE JS. Редактор формы физического объекта.

В этой статье я расскажу о том как работать с Редактором Физических Форм объекта.

Что это такое?

Давайте создадим быстренько новый объект. Нажмите на кнопку создания объекта и перед вами появится стандартный белый квадрат.

Далее выделите наш объект и зайдите в его свойства в окне справа. Перейдите на вкладку Sprites и в самом низу найдите кнопку New Sprite - нажмите её и вы создадите новый спрайт, который будет добавлен к текущему спрайту.

-2

Теперь нажмите на только что созданную вкладку Sprite 1 (unnamed), и перед вами раскроются свойства нашего вновь созданного спрайта.

Найдите свойство size - размер:

-3

И сделайте наш спрайт более вытянутым изменив его значения на 32 и 150

Далее перейдите в свойства другого спрайта Sprite 0 (unnamed), всё в том же самом объекте и поменяйте его размер тоже, только уже на значение 150 и 32.

В итоге у нас получится объект - крест, с двумя спрайтами. Хотя это можно было сделать только с одним спрайтом, но для наших целей сойдет и такой вариант.

-4

Теперь давайте применим к нашему объекту физику игры.

Выделите наш крест и перейдите в его свойства в окне справа. Во вкладке Behaviors, из выпадающего списка выберите PhysicsObject и нажмите на плюсик справа, чтобы добавить это поведение к нашему объекту.

Появится окошко с вопросом хотите ли вы добавить физический движок в вашу игру? Нажмите OK.

Далее опять зайдите во вкладку Behaviors нашего объекта и найдите там свойство bodyType - выберите значение dynamic.

-5

Можете проверить все ли работает уже сейчас запустив игру, нажатием кнопки RUN на верхней панели.

-6

После запуска наш крест начнёт падать под действием гравитации и улетит за пределы экрана.

Давайте создадим платформу на которую он может упасть.

Создайте новый объект. И сделайте его размер size примерно - 700 на 64. Перейдите во вкладку Behaviors и добавьте ему поведение PhysicsObject. По умолчанию его свойство bodyType будет в значении static - это то, что нам и нужно. Т.е. статическая платформа, которая не будет двигаться.

Разместите наш крест над платформой и попробуйте запустить игру еще раз.

Если вы сделали всё правильно, то наш крест будет отскакивать от платформы и возвращаться ровно на то место откуда начал своё падение. Чтобы происходило затухание движения и наш крест успокоился, потеряв всю энергию, нужно изменить в обоих взаимодействующих объектах, свойство restitution например на 0.5. Это свойство находится во вкладке Behaviors в поведение с названием PhysicsObject, как и все другие физические свойства. Измените restitution на 0.5 в обоих объектах.

-7

Итак подготовительная работа сделана ...

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

Поверните наш крест на 45 градусов. Нажав на синий кружочек и удерживая кнопку мыши, переместите мышь изменяя угол поворота.

-8

Теперь запустите игру и посмотрите что будет.

Одна из сторон нашего креста будет проваливаться.

-9

Это происходит потому, что у нашего объекта неправильные границы физической формы. Чтобы посмотреть эти границы и исправить их надо зайти в Редактор Физической Формы объекта.

-10

Чтобы зайти в редактор вы должны выделить ваш объект, который должен иметь поведение - behaviors = PhysicsObject. Далее в свойствах объекта, во вкладке Behaviors - PhysicsObject, вы сможете найти кнопку - Edit Physics Shapes.

Нажмите её и перед вами откроется редактор физической формы объекта:

-11

Первая строчка параметров Show - это переключатели вида.

  • Sprite - включает / отключает отображение вашего спрайта.
  • Shape - включает / отключает отображение формы физики , т.е. того по каким границам будет обрабатываться физика этого объекта.
  • Vertices - включает / отключает отображение вершин формы физики.

Далее в следующей строке есть три кнопки добавления форм:

  • Add Box - добавляет прямоугольник;
  • Add Circle - добавляет круг;
  • Add Poly - добавляет полигон;

Ну и далее снизу слева будут отображаться, список форм который вы добавили. Слева от каждой формы есть знак минус, при нажатии на который вы удалите форму.

Давайте же потренируемся в изменение текущей формы физики объекта.

Удалите текущий полигон нажав кнопку минус слева от Polygon. Теперь добавьте прямоугольник нажав на кнопку Add Box. У вас получится прямоугольник охватывающий весь ваш объект.

-12

Нажмите левой кнопкой мышки на одну из вершин и удерживая кнопку мыши перетащите вершину на нужное место. Переместив все вершины туда куда нам нужно мы получим примерно то, что было изначально :)

-13

Далее нажмите левой кнопкой мыши на одну из сторон нашего прямоугольника, который мы редактируем. У вас должна появиться новая вершина. Обычно она появляется ровно по середине той стороны на которую вы нажали.

Пролистайте изображения выше чтобы увидеть весь процесс.

В конце концов должна получится примерно вот такая форма:

-15

Зеленая линия показывает, как наша форма будет разделена редактором на несколько форм. Так как для просчетов нужно чтобы каждая форма была выпуклой.

Чтобы увидеть на сколько же полигонов разделит редактор нашу форму, нажмите кнопку Apply (применить), в нижнем правом углу. Редактор закроется. Зайдите снова в редактор и вы увидите как много полигонов будет в списке слева.

-16

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

Поэтому мы пойдем другим путём.

Удалите все эти полигоны, нажав минус слева от каждого полигона. У нас будет всего два полигона - а точнее два прямоугольника, которые просто будут наложены друг на друга - крест на крест. Вот так:

-17

Сделайте 2 таких прямоугольника и расположите их по границам нашего объекта. Нажмите кнопку Apply, для того чтобы изменения вступили в силу.

Теперь запустите нашу игру чтобы проверить наши изменения.

Наш крест немного поскакав по платформе должен принять вот такое положение.

-18

Все работает! Игра просчитывает физику объекта ровно по тем границам, которые мы ему задали.

Редактор Физической Формы объекта, позволяет отмечать границы, по которым наш объект должен обрабатываться физическим движком. Это могут быть как простые, так и очень сложные формы.

Так же не стоит добавлять слишком много ненужных полигонов и лучше оптимизировать границы своего объекта для правильной и быстрой обработки физическим движком.

Все полигоны которые вы будете добавлять должны быть выпуклыми.

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

Тренируйтесь! Удачи!

Группа в Вк:

https://vk.com/hd4e_games