Как интегрировать физику пули в свою игру?

Я загрузил найденный файл выпуска здесь , но я просто не знаю, с чего начать. В моей игре у меня есть ряд продолговатых и сфер, я хочу, чтобы все они сталкивались друг с другом. (Все они имеют сетки и связанные ограничивающие объемы)

edit - Я только понял, что кубоиды на самом деле связаны с ними AABB. Думаю, мне придется по крайней мере изменить это.

Какими шагами я должен следовать?

9 голосов | спросил SirYakalot 4 FebruaryEurope/MoscowbSat, 04 Feb 2012 12:52:11 +0400000000pmSat, 04 Feb 2012 12:52:11 +040012 2012, 12:52:11

1 ответ


18

Вот основные шаги, которые вам нужно выполнить:

  1. Первый создать мир (т. е. btDiscreteDynamicsWorld) для управления физикой.

  2. У вас уже должен быть класс, например GameObject, который, возможно, сохранит модель вместе с ее ограничивающей рамкой и позицией /ориентацией в мире. Заменить информацию о местоположении /ориентации с экземпляром объекта btRigidBody), а при рендеринге модели используйте информацию, предоставленную телом. При создании тела вам нужно будет обеспечить его массу и форму столкновения, которые должны соответствовать ограничениям, которые у вас уже есть. Я уже говорил об этом в вашем другом вопросе .

  3. Добавить каждый объект вашего объекта игры в мир .

  4. Обновить симуляцию , перейдя по миру (например, вызывая stepSimulation в вашем мире).

И найдите время прочитайте руководство , так как оно много информации.


Изменить комментарий к адресу

  

Я съеживаюсь, прежде чем спросить, но ... как я могу сделать очень простые вещи, например, просто включить в игру нужные файлы? Если вам нужна специфика, я ищу файлы, которые будут иметь дело с жесткими столкновениями тел. Также большое спасибо за помощь!

Хорошо, из вашего комментария, похоже, вы никогда раньше не работали с внешними библиотеками C ++. Прошло некоторое время с тех пор, как я это сделал, но так я помню процесс (в Visual Studio).

Для начала я цитирую руководство, которое уже объясняет, что вам нужно:

- #include “btBulletDynamicsCommon.h” in your source file 
- Required include path: Bullet/src folder 
- Required libraries: BulletDynamics, BulletCollision, LinearMath

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

1. Шаг подготовки

Прежде всего, извлеките файл, который вы загрузили, в известный каталог, например. C:\Bullet. Вам нужно будет узнать путь к этой папке позже.

Внутри есть две папки, которые вам нужно будет ссылаться в вашем проекте. Первая - это папка src, которая содержит .h, которые будут включать в исходный код. Вторая - это папка lib, которая будет содержать .lib, которые вы будете связывать с вашим проектом. Обратите внимание, что включение и связывание - это две разные вещи.

Но папка lib должна быть пустой, потому что у вас еще нет built , Поэтому обратитесь к руководству о том, как создать проект, например, с помощью CMake и Visual Studio. Это на странице 7.

После того, как вы добьетесь успеха, у вас должно быть как минимум три файла в папке lib: BulletDynamics.lib, BulletCollision.lib и LinearMath.lib (Я угадываю из руководства). Теперь, чтобы установить связь между Bullet и вашим проектом ...

2. Включить заголовки

Прежде всего, вам нужно добавить папку C:\Bullet\src в параметры пути пути к проекту. Вы можете сделать это в Visual Studio, щелкнув правой кнопкой мыши на вашем проекте, перейдя на Configuration Properties -> C/C++ -> General -> Additional Include Directories и наведя там путь к каталогу.

После установки этого параметра вы можете просто сделать #include “btBulletDynamicsCommon.h” в своем коде. Этот заголовок, кажется, служит в качестве концентратора для всех необходимых вам функций.

3. Библиотеки ссылок

Наконец, вам нужно будет связать библиотеки, упомянутые выше. Frist, под Configuration Properties -> Linker -> General -> Additional Library Directories добавить путь к lib или вдругие слова, C:\Bullet\lib.

Затем в Configuration Properties -> Linker -> Input-> Additional Dependencies добавьте имя библиотек в список зависимостей. Разделите каждую библиотеку с помощью ; и не забудьте расширение файла. Например, вы можете добавить в конец списка: BulletDynamics.lib;BulletCollision.lib;LinearMath.lib.

После этого вы сможете создавать и запускать проект.

ответил David Gouveia 4 FebruaryEurope/MoscowbSat, 04 Feb 2012 16:06:01 +0400000000pmSat, 04 Feb 2012 16:06:01 +040012 2012, 16:06:01

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132