Diskuze: Výběr postav
V předchozím kvízu, Online test znalostí GameMakeru, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 11 zpráv z 11.
//= 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.
V eventu collision nastavíš změnu.
Buď změníš jen obrázek postavy. Tzn. přepíšeš sprite_index a nebo
změníš celý objekt, případně přepneš místnost. Já bych volil
nejspíš
ten sprite, protože to je nejméně komplikací.
Doporučuju nastavit proměnnou, která bude určovat jestli postavu získal nebo ne. V create eventu jí nastavíš na false (nebo na nulu, znamená to totéž), a v collision eventu jí přiřadíš hodnotu true (nebo 1).Pak to zkontroluješ podmínkou a přiřaďíš sprite.
Ahoj,
Já bych to vyřešil asi takto:
No já myslím že je to vcelku dobré řešení, pokud to přiřadí
párovému objektu hráče a dá persistent půjde to i přes více
místoností.
Kód pak může vypadat takhle:
global.class="Trpaslík"
//elf,obr,člověk,atd.
Napadlo mě ale že by se to dalo vyřešit objektem na který se klikne a pokud je počet objektů zelený kámen jeho sprit se změní. Potom se klikne na mezerník a hráč zkontroluje
if obj_controller.sprite_index=spr_kamen {instance_change(obj_trpaslik,0)}
Hrozně to komplikujete lidi.
Globální proměnné jsou tady zbytečné, protože jde o vlastnost
hráče,
nikoli celé hry. Proměnná by měla být lokální a vlastník hráčův
objekt.
Řazení proměnných k vlastníkům dělá kód přehlednějším.
A dále bych zakládal proměnné jen na to, co se bude testovat podmínkou.
Když je třeba jen změnit sprite, přepíšu sprite_index, který je taky
proměnná a pak se prostě zeptám if sprite_index==trpaslik ...
Pokud potřebuji změnu jen povolit a ne hned provést, napíšu
player.trpaslik_enabled=true a zas není co řešit. Když jde hráč
přes víc místností, stejně musí být persistent a proměnná jde s
ním.
Globální proměnné by neměly v GM vůbec být. Vídám je na fórech, vídám je tady v ukázkách, lidi to cpou všude a přitom k tomu není vůbec žádný důvod. Myslí si, že proměnná je vždy globální, vůbec nechápou že ji může mít objekt.
V GM se globálních proměnných úplně nejde zbavit.
Některé jsou vestavěné neodstranitelně. Např. lives nebo score.
Bohužel na nich není ani poznat jejich globálnost, protože GM
podporuje vynechání slova global. Globální proměnné mají svůj smysl,
pokud nastavují parametry celé hry. Např. do inicializace roomu
jde napsat kód, který ale nejde přidat vlastníkovi, protože objekty
ještě neexistují. Pak má celkem smysl zadat např. all_audio_mute=true
platící pro všechny zvuky. Jde hlavně o kolizi jmen a čitelnost.
Hezčí mi přijde udělat si objekt ManazerZvuku a dát ho persistent
Zobrazeno 11 zpráv z 11.