Box2D: создаём объекты мышкой

В этой статье мы научимся создавать объекты в Box2D, рисуя их мышкой!

Будем создавать прямоугольники и круги.

Идея такая: отслеживаем зажатие и движение мыши, запоминаем нужные координаты и создаём физический объект по завершению рисования.

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

А так же сделаем возможность переключаться между созданием прямоугольников и кругов нажатием клавиш «1» и «2».

В результате получился вот такой пример:

Для создания объекта нужно зажать левую кнопку мыши и потянуть. Для переключения типов объектов: клавиша «1» — создавать прямоугольники, «2» — создавать круги.

Полный код примера

Пояснения по коду (в скобках номера строк):

[366-372]: отслеживание нажатия кнопок «1» и «2» для переключения типа создаваемого объекта;

[405-407]: если под курсором в момент нажатия нету физического тела, то запоминаем позицию как начальную для создания и включаем флаг состояния создания объекта;

[414-417]: если происходит создание объекта, то вызываем функцию создания нарисованного объекта createCurrentObject() и выключаем состояние создания;

[337-354]: функция создания нарисованного объекта, учитывает текущий выбранный объект и на основании этого создаёт либо круг либо прямоугольник с минимальными радиусом или сторонами = 1 пиксель.

Скачать исходники