Маленький Отважный Арканоид (Часть 3 - Box2D)

Сегодня, как я и обещал, мы вдохнем в нашу Арканоид жизнь.

Заставим шарик двигаться, сталкиваясь с кирпичами, а кирпичи при этом разбиваться.

В принципе, игровая физика в арканоиде не очень сложна и вполне может быть реализована самостоятельно.

Единственный нетривиальный аспект — отслеживание столкновений.

А ведь именно это «взрослые» физические движки делают лучше всего! Так почему бы не использовать их? Более того, если мы спроектируем Box2D как модуль Мармелад , впоследствии мы сможем использовать его в других приложениях, возможно, требующих более сложной «физики».

Давайте продолжим.

Техника проектирования Box2D как подпроекта полностью аналогична той, которую мы использовали в отношении LibYAML в предыдущем статья .

Единственное отличие состоит в том, что у Box2D гораздо больше исходных файлов.

Поэтому, если вы не хотите повторять рутинное переписывание их названий в mkf-файл, что я уже сделал, вы можете взять готовый модуль прямо из GitHub .

Дистрибутив Box2D взят отсюда .

Итак, добавим Box2D в наш проект: арканоид.mkb

  
   

#!/usr/bin/env mkb options { module_path=".

/yaml" + module_path=".

/box2d" } subprojects { iwgl yaml + box2d } includepath { .

/source/Main .

/source/Model } files { [Main] (source/Main) Main.cpp Main.h Quads.cpp Quads.h Desktop.cpp Desktop.h IO.cpp IO.h [Model] (source/Model) Bricks.cpp Bricks.h Ball.cpp Ball.h Board.cpp Board.h } assets { (data) level.json }

… и пытаемся все это скомпилировать, попутно внося косметические исправления в Box2D в категории «порадуем компилятор»: Столкновение\b2BroadPhase.h

- for (int32 i = 0; i < m_moveCount; ++i) + for (int32 j = 0; j < m_moveCount; ++j)

Теги: #мармелад #Android #iOS #box2d #разработка iOS #разработка игр #разработка Android
Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.