Programujete rádi hry aneb jak na kolize objektů?
Verze Flashe číslo 5 nám velmi ulehčila programování her a případných kolizí ve scénách. V následujících řádcích vám ukáži a vysvětlím, jak lze jednoduše ve Flashi naprogramovat kolizi několika objektů. V této první části si vysvětlíme, jak funguje kolize dvou Movie clipů.
Nastavení scény provedeme v okénku Movie Properties (ctrl+M). Velikost plochy ponecháme na standartní velikosti 550x400px, barvu pozadí ponechám bílou. Jenom pro rychlejší přehrávání nastavím počet na 30 framů/s.
Pro následující ukázku si připravíme dva Movie clipy (MC). Stisknutím kláves (ctrl+F8) si vytvoříme první MC, který nazveme „koule“. Nástrojem Oval Tool (O) si namalujeme kružnici o libovolné velikosti, neboť její velikost si upravíme po přenesení tohoto MC z knihovny na plochu. Vyplníme přechodovým radiálním gradientem (K). Já jsem si zvolil přechod z černé do bílé. Tuto kuličku vycentrujeme na střed plochy pomocí funkce Align (ctrl+K).
Nyní si vytvoříme druhý MC (ctrl+F8), který nazveme „okraj“. Nakreslíme si jednoduchý obdélníček nástrojem čtverec (R) červené barvy. Velikost si opět upravíme na ploše. Tímto jsme si připravili základní stavební prvky a nyní vše přeneseme na plochu a rozpohybujeme. Vrátíme se do hlavní scény. Z knihovny si přeneseme na plochu nejdříve MC „koule“ a v panelu Instance (ctrl+I) jej pojmenujeme „kulicka“.
Nastavíme si její velikost v panelu Info (ctrl+alt+i) na hodnoty 20 x 20 px. Nyní si přeneseme druhý MC – „okraj“ do plochy. Protože jej použijeme víckrát, nastavíme si je postupně. Jejich názvy jsem volil podle umístění vzhledem ke středu plochy. Jako první si vytvoříme horní odrazovou plochu, kterou si nazveme v panelu Instance (ctrl+I) „horni“. V panelu Info (ctrl+alt+i) nastavíme její velikost 550 x 20 px a pomocí panelu zarovnání Align (ctrl+K) zarovnáme na střed a nahoru.
Postupně si vytvoříme další instance – „dolni“, „vlevo“, „vpravo“. U dvou posledně jmenovaných nastavíme v panelu Info (ctrl+alt+i) velikost 20 x 400 px a zarovnáme je na střed a doleva (příp. doprava).
Nyní si vytvoříme nový layer. Pravým tlačítkem myši nad prvním políčkem si nyní vložíme akce. Nastavíme vstupní hodnoty pro pohyb kuličky.
|
Levým tlačítkem myši označíme třetí políčko a stiskem tlačítka F6 si vytvoříme klíčové políčko pro vložení dalších akcí. Tyto akce přemisťují kuličku po ploše a nastavují její polohu – souřadnice.
|
Když by jste si v tuto chvíli chtěli zkusit spustit animaci (ctrl+Enter), zjistíte, že kulička vám za chvíli zmizí nenávratně z obrazovky. Co způsobuje, že se nám kulička neodráží v omezeném prostoru? Odpověď budeme hledat v programování kolize dvou objektů. Nyní si pro každý okraj naprogramujeme akce na tomto MC (object actions). Stiskem pravého tlačítka myši nad instancí „horní“ vyvoláme menu a zvolíme si položku Object actions.
Nyní zadáme akce na objektu:
|
V druhém řádku dochází k vyhodnocení kolize dvou objektů. MC objekt „horní“ (this) je testován na překrytí druhým objektem, což v tomto případě je MC „kulicka“. Pokuď dojde ke splnění podmínky, platí příkazy ve složené závorce, které mi vrací opačnou hodnotu pro y-rychlost a zároveň dochází k posunu objektu ve směru nových hodnot. Tím je zaručeno, že nám nedojde k neočekávaným posunům, kde testujeme kolizi více MC.
Při testování kolizí vás musím upozornit na následující jev, jak ukazuje následující obrázek. Jak vidíte, ačkoliv nedochází k přímému kontaktu dvou objektů, počítač by tuto situaci vyhodnotil už jako kolizi, protože dochází k překrývání obrysů. S tímto jevem musíte při plánování kolizí počítat a přizpůsobit buď výpočet nebo tvar objektů.
Při zadávání akce na objektu postupujeme stejně také v případě MC „dolní“, kde zadáme stejné akce. Pro zadání akcí na objekt „vlevo“, případně „vpravo“ postupujeme obdobným způsobem s tím rozdílem, že potřebujeme vracet opačnou hodnotu pro x-rychlost.
|
Tím máme vše připraveno a můžeme si spustit kontrolu animace klávesami (ctrl+Enter). Zdrojový soubor je možný stáhnout zde.
Starší komentáře ke článku
Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.
Mohlo by vás také zajímat
-
Souboj na trhu s CPU pro servery: AMD vs. Intel
8. prosince 2023 -
Webový správce souborů Filestash – dojmy a recenze
29. července 2024 -
Doména .io v ohrožení: Co přinese předání Čagoských ostrovů?
10. října 2024 -
Nepodceňte UX na vašem webu: Proč na něm záleží?
10. dubna 2024
Nejnovější
-
Výkonný a kompaktní: ASOME Max Studio s výjimečným poměrem cena/výkon
11. listopadu 2024 -
Šokující data od Microsoftu: Kyberútoky rostou o stovky procent!
8. listopadu 2024 -
Chcete jedinečnou doménu? Objevte koncovky FOOD, MEME a MUSIC!
7. listopadu 2024 -
OpenAI představilo novou funkci ChatGPT Search
6. listopadu 2024