Ta strona stosuje pliki cookies. Poczytaj co to jest w polityka cookies



Tworzenie gier 2D i 3D
Animacja 2d
Grafika 3D
Tworzenie muzyki

Kącik początkującego

Gimp Zderzenia obiektów w grach

    Jak to w życiu bywa tak i w grze obiekty mogą się zderzać, zsuwać się po sobie, odbiajać się itd. Zobaczmy co się stanie jak dołożymy wiecej obiektów.

Do naszego kodu dołóżmy jeszcze jedną piłeczkę. Jaki będzie efekt? Zobaczmy sami.

corona_sdk_58.jpg

Niby wszystko dobrze jednak coś jest nie tak. Piłki spadły z góry jedna na drugą i są nieco przesunięte jednak czy w rzeczywistości górna nie spadłaby popychając nieznacznie tą dolną? Gdzie zatem tkwi błąd?

Hybrydowy widok

     Aby rozszyfrować tę zagadkę skorzystamy z pomocy pewnej ciekawej funkcji, która wszystko wyjaśni. Jaka to funkcja? Otóż możemy włączyć hybrydowy widok, który ukaże nam jak wygląda ciało fizyczne danego obiektu. Dobrze, nie przedłużam i już daję przykład:

physics.setDrawMode("hybrid")

corona_sdk_59.jpg

Po dodaniu powyższej linijki do zaraz po physics.start() sprawi, że będziemy widzieli obiekty otoczone kształtami niekoniecznie pokrywającymi się z widzialnymi przedmiotami. Ten widok ukazuje nam jak dany obiekt widzi silnik fizyczny, czyli gdyby to była piłka to by się jedna z drugiej sturlała. Niestety silnik Corony SDK widzi tu dwa kwadraty zamiast dwóch piłek! Tu jest rozwiązanie naszej zagadki!

Dobra, dobra ale co teraz zrobić, żeby to działało prawidłowo?

Wystarczy ustawić obiekt piłka jako okrąg a nie jako prostokąt za pomocą specjalnej funkcji co zrobimy w następnym akapicie.

corona_sdk_60.jpg

Teraz jeszcze chciałbym omówić pozostałe tryby pracy symulatora.

physics.setDrawMode("debug")

Opcja ta wyświetli tylko fizyczne ciało a rzeczywiste nie będzie wyświetlane co można zobaczyć obok. Zamiast piłek mamy dwa kwadraty.

Gdybyśmy chcieli powrócić do normalnego trybu to możemy umieścić w kodzie taką linijkę i wszystko wróci do normy:

physics.setDrawMode("normal")


     local physics = require("physics")
physics.setDrawMode("hybrid"
)
    
physics.start
()
    
local pilka_plazowa_mala display.newImage("pilka_plazowa_mala.png"
)
    
local podloze display.newRect(0,80060050
)
local pilka_plazowa_mala1 display.newImage("pilka_plazowa_mala.png"
)

physics.addBody(pilka_plazowa_mala1, {density=0friction=1bounce=0.3
})
pilka_plazowa_mala1.x=
152
pilka_plazowa_mala1
.y=
152

pilka_plazowa_mala
.x=
150
pilka_plazowa_mala
.y=150    physics.addBody(pilka_plazowa_mala, {density=0friction=1bounce=0.3
})
physics.addBody(podloze, {density=1friction=0.5bounce=0.3
})
    
podloze.bodyType "static"

 Zobaczmy, że piłki spadając na siebie z lekkim przesunięciem niestety zachowują się jak dwie skrzynki, bo taki mają kształt jako ciało fizyczne dlatego też jedna spadając na drugą nie przesuwa się ani nie przetacza. Problemowi temu przyjrzymy się bliżej w następnym artykule.

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

Różne

copyright © Pcwiedza.pl