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 stepSimulationIhre 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 srcOrdner, der die hält .hHeader - Dateien , dass Sie umfassen im Quellcode. Der zweite ist der libOrdner, in dem sich die .libBibliotheksdateien befinden, die Sie mit Ihrem Projekt verknüpfen . Beachten Sie, dass das Einschließen und Verknüpfen zwei verschiedene Dinge sind.
Aber der libOrdner 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 libOrdner haben : BulletDynamics.lib, BulletCollision.libund 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\srcOrdner 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 Directoriesdem 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 Directoriesfügen Sie den Pfad zum libOrdner hinzu, oder mit anderen Worten , C:\Bullet\lib.
Fügen Sie dann unter Configuration Properties -> Linker -> Input-> Additional Dependenciesden 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 overviewgeworfen ? 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.