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.
Jakie są parametry ciał w Corona
Grawitacja, gęstość, tarcie, sprężystość w grach
Zderzenia obiektów w grach
Zmiana kształtu ciała fizycznego
Niestandardowe kształty obiektów w grach
Gumbo - Jak wyznaczyć kształt w Corona SDK
Prędkość obrotowa w grze
Gęstość przedmiotów - manipulacja
Tarcie w Corona SDK - Przykłady
Zmiana grawitacji dla poszczególnych obiektów
Jak nadać obiektom prędkość w grze?
Tworzenie czujników w grze



