Hier sind die grundlegenden Schritte, die Sie ausführen müssen:
Zunächst erstellen Sie ein Welt - Objekt (dh btDiscreteDynamicsWorld
) Ihre Physik - Simulation zu fahren.
Sie sollten bereits eine Klasse wie diese haben GameObject
, die möglicherweise ein Modell zusammen mit seinem Begrenzungsrahmen und seiner Position / Ausrichtung in der Welt speichert. Ersetzen der Position / Orientierung Informationen mit einer Instanz eines physikalischen Körpers Objekt (dh btRigidBody
) , und wenn das Modell Rendering verwenden , um die Stelle durch den Körper zur Verfügung gestellten Informationen. Wenn Sie den Körper erstellen, müssen Sie seine Masse und Kollisionsform angeben, die mit den bereits vorhandenen Begrenzungsvolumina übereinstimmen sollten. Ich habe auch in Ihrer anderen Frage darüber gesprochen .
Fügen Sie dem Weltobjekt jeden Körper Ihres Spielobjekts hinzu.
Aktualisieren Sie die Simulation, indem Sie die Welt betreten (dh stepSimulation
Ihre Welt anrufen ).
Nehmen Sie sich etwas Zeit, um das Handbuch zu lesen, da es auch viele Informationen enthält.
Bearbeiten, um den Kommentar zu adressieren
Ich erschrecke, bevor ich frage, aber ... wie mache ich die sehr grundlegenden Dinge, wie einfach die richtigen Dateien in mein Spiel aufzunehmen? Wenn Sie Einzelheiten benötigen, suche ich nach Dateien, die sich mit Starrkörperkollisionen befassen. Vielen Dank auch für die bisherige Hilfe!
Aus Ihrem Kommentar geht hervor, dass Sie noch nie zuvor mit externen C ++ - Bibliotheken gearbeitet haben. Es ist schon eine Weile her, seit ich das getan habe, aber so erinnere ich mich an den Prozess (in Visual Studio).
Für den Anfang zitiere ich das Handbuch, das bereits erklärt, was Sie brauchen:
- #include “btBulletDynamicsCommon.h” in your source file
- Required include path: Bullet/src folder
- Required libraries: BulletDynamics, BulletCollision, LinearMath
Und hier sind die grundlegenden Schritte, die Sie ausführen müssen, um die oben genannten Bedingungen zu erfüllen ...
1. Vorbereitungsschritt
Extrahieren Sie zunächst die heruntergeladene Datei in ein bekanntes Verzeichnis, z C:\Bullet
. Sie müssen den Pfad zu diesem Ordner später kennen.
Im Inneren befinden sich zwei Ordner, auf die Sie in Ihrem Projekt verweisen müssen. Der erste ist der src
Ordner, der die hält .h
Header - Dateien , dass Sie umfassen im Quellcode. Der zweite ist der lib
Ordner, in dem sich die .lib
Bibliotheksdateien befinden, die Sie mit Ihrem Projekt verknüpfen . Beachten Sie, dass das Einschließen und Verknüpfen zwei verschiedene Dinge sind.
Aber der lib
Ordner sollte nun leer sein, weil Sie nicht haben , gebaut um den Motor noch. Lesen Sie daher das Handbuch, wie Sie das Projekt beispielsweise mit CMake und Visual Studio erstellen. Es ist auf Seite 7.
Nachdem Sie erfolgreich waren, sollten Sie mindestens drei Dateien im lib
Ordner haben : BulletDynamics.lib
, BulletCollision.lib
und LinearMath.lib
(ich vermute aus dem Handbuch). Nun stellen Sie die Verbindung zwischen Bullet und Ihrem Projekt her ...
2. Überschriften einschließen
Zunächst müssen Sie den C:\Bullet\src
Ordner zu den Include-Pfadoptionen Ihres Projekts hinzufügen . Sie können dies in Visual Studio tun, indem Sie mit der rechten Maustaste auf Ihr Projekt klicken, zu Configuration Properties -> C/C++ -> General -> Additional Include Directories
dem dort angegebenen Verzeichnispfad navigieren und diesen schreiben.
Nachdem Sie das eingerichtet haben, können Sie einfach #include “btBulletDynamicsCommon.h”
Ihren Code bearbeiten. Dieser Header scheint als Hub für alle Funktionen zu dienen, die Sie benötigen.
3. Bibliotheken verknüpfen
Schließlich müssen Sie die oben genannten Bibliotheken verknüpfen. Frist, unter Configuration Properties -> Linker -> General -> Additional Library Directories
fügen Sie den Pfad zum lib
Ordner hinzu, oder mit anderen Worten , C:\Bullet\lib
.
Fügen Sie dann unter Configuration Properties -> Linker -> Input-> Additional Dependencies
den Namen der Bibliotheken zur Liste der Abhängigkeiten hinzu. Trennen Sie jede Bibliothek mit einem ;
und vergessen Sie die Dateierweiterung nicht. So können Sie dies beispielsweise am Ende der Liste hinzufügen : BulletDynamics.lib;BulletCollision.lib;LinearMath.lib
.
Danach sollten Sie in der Lage sein, Ihr Projekt zu erstellen und auszuführen.
4.4 Integration overview
geworfen ? Ich weiß, dass es sehr spartanisch ist, aber es beschreibt den grundlegenden Prozess. Wenn Sie sich das und den Code für die Beispieldemos ansehen, sollten Sie nicht zu viele Probleme haben.