Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Vojtěch Bochníček:28.1.2017 17:59

Dobrý den. Snažím se naprogramovat jednoduchou hru, ale mám problém s vymyšlením jednoho příkazu. Uvedu příklad. Představte si hru Bomber. Panáček pokládá bombu na místo, kam zrovna kouká. Jak tedy udělám aktivní kolizi pouze, když je Objekt ve směru pohledu postavy. Potřebuji aby má postava zabíjela objekty pouze když bude v jejím ohledu. Přijde mi hloupé, aby zabíjela nepřítele úderem do předu, když stojí za ní.
Předem děkuji za odpověď.

 
Odpovědět
28.1.2017 17:59
Avatar
TomBen
Tvůrce
Avatar
TomBen:29.1.2017 9:04

Jde to udělat různě. Kolizi můžeš otestovat na libovolném místě - koukni na funkce:
instance_posi­tion(x,y,obj),
collision_mee­ting(x,y,obj)
place_meeting(x,y,ob­j).

Někdy stačí jednodušší geometrický tvar testovaného místa jako:
collision_poin­t(x,y,obj,prec,not­me)
nebo collision_line(x1,y1,x2,­y2,obj,prec,not­me ).

Můžeš simulovat reálnou viditelnost vzhledem k překážkám a viditelnost do určité vzdálenosti. Čím méně testovaných pixelů a čím jednodušší tvar, tím rychlejší to obvykle je. Projdi si to a vyber si, co se ti nejvíc hodí.

Taky je důležité se zamyslet nad tím, jak se co pohybuje. Pokud třeba herní objekty skáčou po skocích ve 32px čtvercové síti, není třeba testovat pomalé pixelové kolize vůbec. Stačí zjistit, jestli některý z objektů není na pozici x+32.

Editováno 29.1.2017 9:04
Nahoru Odpovědět
29.1.2017 9:04
Za posledních 200 miliónů let se nic zvláštního nestalo, akorát dinosauři vymřeli a opice se naučily programovat.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 2 zpráv z 2.