Python týden Geek tričko zdarma
Tričko zdarma! Stačí před dobitím bodů použít kód TRIKO15. Více informací zde
Pouze tento sleva až 80% na kurzy Python
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
Redaktor
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.