Grawitacja, gęstość, tarcie, sprężystość w grach
Gdy już uruchomimy silnik fizyki to musimy się wtedy martwić wieloma problemami naraz. Już tak łatwo nie uciekniemy od grawitacji, tarcia, sprężystości oraz gęstości poszczególnych obiektów. No i dobrze - wreszcie dzieje się coś ciekawego...
Posłużymy się przykładem małej piłki plażowej spadającej na białe podłoże. Kod jest w poprzednim artykule więc go nie powtarzam.
Współczynnik grawitacji w grach
Do naszego kodu zaraz po physics.start() dodajmy jeszcze parametr:
physics.setGravity(0,9.8)
Gdzie pierwszy parametr to grawitacja w osi x a drugi w y. Oczywiście my skorzystamy z grawitacji w osi y, by symulować otaczający nas świat. Parametr 9.8 odpowiada ziemskiemu współczynnikowi grawitacji.
Jak można testować program? Zanim przejdziemy dalej polecam wykonać kilka testów:
- physics.setGravity(0,1) - piłeczka bardzo powoli będzie spadać. Przyciąganie na tej planecie jest bardzo słabe
- physics.setGravity(0,40) - piłeczka pogna jak szalona. Dobrze, że u nas przyciąganie nie jest tak silne, bo ciężko by było chodzić
- physics.setGravity(0,-9.8) - piłeczka poleci... ale do góry! Co jest grane! Ta planeta raczej odpycha niż przyciąga! Ujemne wartości sprawiają, że panuje tu antygrawitacja
- physics.setGravity(9.8,0) - piłeczka poleci... zaraz zaraz w prawo zamiast w dół. No cóż jak świat fantazyjny to i boczna grawitacja może się zdażyć.
Sprężystość obiektów
Dodając dany obiekt do świata fizyki definiujemy podstawowe parametry. Jednym z nich jest sprężystość - bounce, która domyślnie ma wartość 0,2.
Zobaczmy jakie zmiany wywoła manipulowanie tym parametrem:
- physics.addBody(pilka_plazowa_mala, {density=1, friction=0.5, bounce=0}) gdy nadamy parametrowi bounce wartość 0 to nasza piłka spadnie jak worek z piaskiem. Oczywiście podłoże też musi mieć bounce=0
- physics.addBody(pilka_plazowa_mala, {density=1, friction=0.5, bounce=1}) Teraz to już wykraczamy poza świat realny - piłeczka będzie cały czas się odbijała w nieskończoność. Po upuszczeniu jej będzie wracała w to lub prawie to samo miejsce skąd była upuszczona.
- physics.addBody(pilka_plazowa_mala, {density=1, friction=0.5, bounce=1}) Teraz to jest już całkowite science fiction! Piłka z każdym upadkiem nabiera prędkości. Uwaga zaraz zniknie nam z pola widzenia i coraz rzadziej będzie do nas zawijać...
Gęstość obiektów
Gęstość obiektów definiuje parametr density i wartość 1 oznacza gęstość wody a poniżej to lżejsze przedmioty zaś więcej to cięższe takie jak np. żelazo.
Tarcie
Tarcie wyznacza parametr friction.
Gęstość oraz tarcie dokładniej omówimy podczas zderzeń z innymi obiektami, bo w przykładzie spadania piłki ciężko jest zaobserwować jakieś zmiany.
Czytaj dalej: Fizyka w grach 2d - Android
Warning: include_once(includes/rss_fetch.php) [function.include-once]: failed to open stream: No such file or directory in /home/ekoinst/domains/pcwiedza.pl/public_html/tworzenie-gier/includes/funkcje.php on line 548
Warning: include_once() [function.include]: Failed opening 'includes/rss_fetch.php' for inclusion (include_path='.:/opt/alt/php52/usr/share/pear:/opt/alt/php52/usr/share/php') in /home/ekoinst/domains/pcwiedza.pl/public_html/tworzenie-gier/includes/funkcje.php on line 548