Diskuze: Více pohybujících se nepřátel

Ostatní jazyky GameMaker GameMaker Více pohybujících se nepřátel

Avatar
martinsakra
Redaktor
Avatar
martinsakra:

Zdravim dělám 2D střílečku s pohledu shora. Vytvořil jsem si nepřátele které mě pronásledují hráče, otáčí se za ním atd, ale nepodařilo se mi rozumě vyřešit problém kolizí nepřátel jako takových mezi sebou, aby se pokud možno nestráželi a neblokovali navzájem.

Odpovědět 12.1.2013 12:22
Democracy is two wolves and a lamb voting on what to have for lunch. Liberty is a well-armed lamb contesting the vote.
Avatar
matesax
Redaktor
Avatar
Odpovídá na martinsakra
matesax:

Záleží na tom, jaký systém grafiky máš... Je-li vše ve svém čtvercovém poli, pak jen poměřuješ vzdálenost a poměr ku čtverci nepřítele. Pochopitelně to pak způsobuje problémy vizuální. Proto navrhuji kolizi kružnicovou - nebudeš tedy brát v potaz, že je nestvůra spíše do šířky, ale prostě kolem ní uděláš pomyslnou kružnici. Jen bude v GM asi náročnější vypočítat to s co nejnižšími nároky na PC...

Editováno 12.1.2013 12:27
 
Nahoru Odpovědět 12.1.2013 12:27
Avatar
martinsakra
Redaktor
Avatar
Odpovídá na matesax
martinsakra:

možná špatně pochopeno, problém nemám s tím že vznikne a detekuji kolizi , ale s tim jak ji řešit pro situace 3 a více nepřátel (popřípadně vhodně předcházet).Zkusil jsem několik ruzných reakcí, ale povětšinou to dopadlo tak že se objekt chvíli dost "zmateně" a graficky neesteticky pohyboval než se to vyřešilo.

Nahoru Odpovědět 12.1.2013 12:49
Democracy is two wolves and a lamb voting on what to have for lunch. Liberty is a well-armed lamb contesting the vote.
Avatar
TomBen
Redaktor
Avatar
Odpovídá na martinsakra
TomBen:

U takových věcí bývá největší problém optimalizace, abys v každém průchodu
nekontroloval kolize tisíců objektů. Když kolize blbnou, zkontroluj masky
všech dotčených sprites a povypínej precision. Všude, kde je to jen trochu
možné použij čtvercové nebo kruhové masky. Kde to nepomáhá, testuj vzdálenost
středů např. point_distance(x1,y1,x2,­y2). Jakoukoli podmínku, která omezí
počet testovaných objektů, je dobré použít.

Nahoru Odpovědět 12.1.2013 12:55
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.
Avatar
TomBen
Redaktor
Avatar
Odpovídá na martinsakra
TomBen:

Zdá se, že než jsem to dopsal, už je dotaz trochu jiný. :D

Nahoru Odpovědět 12.1.2013 12:57
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.
Avatar
TomBen
Redaktor
Avatar
TomBen:

Pokud se ti nepřátelé "motají", nechávej je po každém posunu otestovat
na kolize a pokud bude true, vrať ho na xprevious, yprevious. Tím prostě
zůstane stát. Zatímco, když dáš stop pohybu v případě kolize, motají se
okolo, protože kolize se opakuje v každém stepu.

Nahoru Odpovědět 12.1.2013 13:01
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.
Avatar
martinsakra
Redaktor
Avatar
martinsakra:

No přesně to jsem měl na myslim, sprites měl blbnou ve smyslu, že zatím jsem řešil kolizi tím že jsem se snažin změnit úhel pohybu rychlost nebo dokonce i odraz :) a mám tam daný skript který automaticky mení otočení spritu podle toho kterým de směrem a v takových to chvílich se bláznivě měnil, otáčel z důvodu že kolize nastávala několikrát za vteřinu. Ano point distance , kruhové masky atd jsem schopen nějak zapomponovat jak bude potřeba, ale spíš bych chtěl radu, jak následně řešit situaci, resp jakým směrem se mají nepřátelé vydat (jak to rozhodnout) aby stále mířili k hráči "nějak" a zároveň si navzájem nepřekáželi. (něco na způsob avoid obstacles) ale pro pohyblivý objetky

Nahoru Odpovědět 12.1.2013 13:02
Democracy is two wolves and a lamb voting on what to have for lunch. Liberty is a well-armed lamb contesting the vote.
Avatar
TomBen
Redaktor
Avatar
Odpovídá na martinsakra
TomBen:

No kvalitní AI motion plannig je jeden z nejobtížnějších úkolů vůbec.
Zkus mp_potential_pat­h_object a nech si cestu ukazovat v debug módu,
abys viděl, co to reálně spočítalo.

Nahoru Odpovědět 12.1.2013 13:24
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.
Avatar
martinsakra
Redaktor
Avatar
martinsakra:

hm a jak si mám nechat ukázat cestu v debug modu, nějak to nemužu dohledat

Nahoru Odpovědět 12.1.2013 14:30
Democracy is two wolves and a lamb voting on what to have for lunch. Liberty is a well-armed lamb contesting the vote.
Avatar
TomBen
Redaktor
Avatar
Odpovídá na martinsakra
TomBen:

Je to path, takže draw_path.

Samosebou if debug_mode.

Editováno 12.1.2013 14:54
Nahoru Odpovědět 12.1.2013 14:53
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.
Avatar
TomBen
Redaktor
Avatar
TomBen:

Taky by možná stálo za pokus, zpomalovat pohyb v případě,
že za N stepů dojde ke kolizi. Tzn. např. ověřím 11 stepů napřed
a pokud dojde ke kolizi na některém z nich, zpomalím o 10%.
Čímž docílím, že pokud má dojít k nárazu hned, objekt zastaví hned.
Jinak jen zpomaluje a doufá, že překážka uhne nebo zmizí.

Nahoru Odpovědět 12.1.2013 15:14
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.
Avatar
martinsakra
Redaktor
Avatar
martinsakra:

No povedlo se mi na foru najít tohle http://host-a.net/…Handlers.gmk
a po chvilce úprav to zatím funguje dobře, ještě to chce upravit pro moji potřebu a doladit další věci (viz to zpomalování + budu muset naučit postavu hráče správě interagovat, ale tohle dost pomohlo)

Nahoru Odpovědět 12.1.2013 16:38
Democracy is two wolves and a lamb voting on what to have for lunch. Liberty is a well-armed lamb contesting the vote.
Avatar
TomBen
Redaktor
Avatar
Odpovídá na martinsakra
TomBen:

To vypada celkem názorně. Právě se tam dodržují základní tvary
a jednoduché dráhy, jak jsme tady psali. Hezký příklad.

Nahoru Odpovědět 12.1.2013 16:52
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 13 zpráv z 13.