Pobrałem znaleziony tutaj plik wydania , ale nie jestem pewien, od czego zacząć. W mojej grze mam wiele podłużnych i kuli, chcę, aby wszystkie one kolidowały ze sobą. (Wszystkie mają siatki i powiązane objętości ograniczające)
edytuj - Właśnie zdałem sobie sprawę, że prostopadłościany mają z nimi skojarzone AABB. Chyba muszę to zmienić przynajmniej.
Jakie kroki muszę wykonać?
c++
directx
physics-engine
bullet-physics
SirYakalot
źródło
źródło
4.4 Integration overview
wiem, że jest bardzo spartański, ale opisuje podstawowy proces. Więc jeśli spojrzysz na to i kod na przykładowe dema, nie powinieneś mieć zbyt wielu problemów.Odpowiedzi:
Oto podstawowe kroki, które musisz wykonać:
Najpierw utwórz obiekt świata (tj.
btDiscreteDynamicsWorld
), Aby przeprowadzić symulację fizyki.Powinieneś już mieć taką klasę,
GameObject
że może przechowuje model wraz z obwiednią i pozycją / orientacją na świecie. Zastąpić w pozycji / orientacji informacji o wystąpieniu fizyki ciała obiektu (tjbtRigidBody
), a podczas odtwarzania modelu na podstawie informacji dostarczonych przez organizm, a nie. Tworząc ciało, musisz podać jego masę i kształt kolizji, które powinny odpowiadać ograniczonym objętościom, które już masz. Mówiłem o tym również w innym pytaniu .Dodaj ciała każdego obiektu gry do obiektu świata .
Zaktualizuj symulację , krocząc po świecie (tj. Wzywając
stepSimulation
swój świat).Poświęć trochę czasu na przeczytanie instrukcji, ponieważ zawiera ona również wiele informacji.
Edytuj w celu zaadresowania komentarza
Z twojego komentarza wynika, że nigdy wcześniej nie pracowałeś z zewnętrznymi bibliotekami C ++. Minęło trochę czasu, odkąd to zrobiłem, ale tak pamiętam proces (w Visual Studio).
Na początek cytuję instrukcję, która już wyjaśnia, czego potrzebujesz:
Oto podstawowe kroki, które musisz wykonać, aby spełnić powyższe warunki ...
1. Krok przygotowawczy
Przede wszystkim rozpakuj pobrany plik do znanego katalogu, np
C:\Bullet
. Będziesz musiał później poznać ścieżkę do tego folderu.Wewnątrz znajdują się dwa foldery, do których należy odwołać się w swoim projekcie. Pierwszy to
src
folder, w którym przechowywane są.h
pliki nagłówkowe, które zostaną uwzględnione w kodzie źródłowym. Drugi tolib
folder, który będzie trzymać.lib
pliki biblioteki, które będą odwołuje się do projektu. Zauważ, że dołączanie i łączenie to dwie różne rzeczy.Ale
lib
folder powinien być na razie pusty, ponieważ nie zbudowałeś jeszcze silnika. Więc zapoznaj się z instrukcją, jak zbudować projekt przy użyciu CMake i Visual Studio, na przykład. Jest na stronie 7.Po odnieść sukces, trzeba mieć co najmniej trzy pliki w
lib
folderze:BulletDynamics.lib
,BulletCollision.lib
iLinearMath.lib
(mam zgadywać z podręcznika). Teraz, aby nawiązać połączenie między Bullet a twoim projektem ...2. Dołącz nagłówki
Przede wszystkim musisz dodać
C:\Bullet\src
folder do opcji ścieżki dołączania do projektu. Możesz to zrobić w programie Visual Studio, klikając projekt prawym przyciskiem myszy, nawigującConfiguration Properties -> C/C++ -> General -> Additional Include Directories
i zapisując tam ścieżkę katalogu.Po skonfigurowaniu możesz po prostu zrobić
#include “btBulletDynamicsCommon.h”
kod. Ten nagłówek wydaje się służyć jako centrum wszystkich wymaganych funkcji.3. Połącz biblioteki
Na koniec musisz połączyć wyżej wymienione biblioteki. Frist, pod
Configuration Properties -> Linker -> General -> Additional Library Directories
dodać ścieżkę dolib
folderu, lub innymi słowyC:\Bullet\lib
.Następnie w obszarze
Configuration Properties -> Linker -> Input-> Additional Dependencies
dodaj nazwę bibliotek do listy zależności. Oddziel każdą bibliotekę od;
i nie zapomnij rozszerzenia pliku. Tak na przykład, można dodać to do końca listy:BulletDynamics.lib;BulletCollision.lib;LinearMath.lib
.Po tym powinieneś być w stanie zbudować i uruchomić swój projekt.
źródło