This translation is community contributed and may not be up to date. We only maintain the English version of the documentation. Read this manual in English
Defold zawiera zmodyfikowaną wersję silnika fizycznego Box2D (wersja 2.2.1) do symulacji fizyki 2D oraz silnik fizyczny Bullet (wersja 2.77) do fizyki 3D. Umożliwia to symulowanie interakcji zgodnych z fizyką Newtona między różnymi typami obiektów kolizji. Ten podręcznik wyjaśnia, jak to działa.
Główne pojęcia silników fizycznych używanych w Defold to:
Oprócz samych obiektów kolizji możesz też definiować obiekt kolizji ograniczenia, częściej nazywane joints, aby połączyć dwa obiekty kolizji i ograniczyć ich ruch albo w inny sposób wpływać na ich zachowanie w symulacji fizycznej. Dowiedz się więcej o joints.
Możesz też sondować i odczytywać świat fizyczny wzdłuż liniowego promienia, znanego jako ray cast. Dowiedz się więcej o ray castach.
Silnik fizyczny symuluje fizykę Newtona i został zaprojektowany tak, aby dobrze działać z jednostkami metrów, kilogramów i sekund (MKS). Ponadto silnik jest dostrojony do pracy z poruszającymi się obiektami o rozmiarze od 0,1 do 10 metrów (obiekty statyczne mogą być większe), a domyślnie traktuje 1 jednostkę (piksel) jako 1 metr. To przeliczanie pikseli na metry jest wygodne na poziomie symulacji, ale z perspektywy tworzenia gier nie jest zbyt użyteczne. Przy domyślnych ustawieniach kształt kolizji o rozmiarze 200 pikseli będzie traktowany jak obiekt o rozmiarze 200 metrów, czyli znacznie poza zalecanym zakresem, przynajmniej dla obiektu poruszającego się.
Ogólnie rzecz biorąc, trzeba przeskalować symulację fizyczną tak, aby dobrze działała z typowym rozmiarem obiektów w grze. Skalę symulacji fizycznej można zmienić w pliku game.project za pomocą ustawienia skali fizyki. Na przykład ustawienie tej wartości na 0,02 oznaczałoby, że 200 pikseli byłoby traktowane jako 4 metry. Pamiętaj, że grawitację, również ustawianą w game.project, trzeba zwiększyć, aby uwzględnić zmianę skali.
Zaleca się regularne aktualizowanie silnika fizycznego, aby zapewnić stabilną symulację, zamiast wykonywać aktualizacje w potencjalnie nieregularnych odstępach zależnych od liczby klatek na sekundę. Możesz włączyć stałą aktualizację fizyki, zaznaczając ustawienie Use Fixed Timestep w sekcji Physics pliku game.project. Częstotliwość aktualizacji jest kontrolowana przez ustawienie Fixed Update Frequency w sekcji Engine pliku game.project. Gdy używasz stałego kroku czasowego dla fizyki, zaleca się również korzystanie z funkcji cyklu życia fixed_update(self, dt) do interakcji z obiektami kolizji w grze, na przykład podczas przykładania do nich sił.