Diskuze: Problém se sekáním o zdi při klasickém řešením pohybu postavy
V předchozím kvízu, Online test znalostí GameMakeru, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 3 zpráv z 3.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí GameMakeru, jsme si ověřili nabyté zkušenosti z kurzu.
GM základní systém kolizí je trochu neohrabaný a hodí se pouze pro nejjednodušší případy. Jinak se obvykle používá Box2D fyzika, která je v GM defaultně k dispozici od verze GM Studio. Tvůj případ by měl jít ale i tím základem. Jen to nedělej kolizním eventem. Uvědom si, že ten nastane až tehdy, když se objekty překrývají - čili pozdě. Určitě to půjde líp pomocí predikce pohybu. Než se objekt skutečně pohne, otestuješ jestli na jeho budoucí pozici něco leží a podle toho ten pohyb dovolíš nebo ne. Tak to je u většiny řešení, která najdeš na netu. Přibližný princip je podobný této ukázce z manuálu GM:
if keyboard_check(vk_left) { if !place_meeting(x - 5, y, obj_wall) x -=5; } //zeď brání pohybu vlevo
Teoreticky můžeš taky použít návrat na pozici xprevious, yprevious. Něco jako toto ve Stepu:
if place_meeting(x, y, obj_wall) { x=xprevious; y=yprevious; } //kontakt se zdí vrátí původní polohu
Ale nehodí se to na složitější pohyby, protože to vrátí jakoukoliv předchozí pozici ( i špatnou ). Takže náraz do více zdí najednou ( roh ) může přinést nečekané problémy. Nicméně některé věci jdou šikovně ošéfovat až při leveldesignu například vzdálenostmi překážek.
Děkuji púomohlo to. Zahrnu tě do titulků jako odbornou konzultaci u hry která bude tak těžká že jí stejně nikdo nedohraje. Ještě jednou děkuju.
Zobrazeno 3 zpráv z 3.