Diskuze: Funkce If

Ostatní jazyky GameMaker GameMaker Funkce If

Avatar
Mici.naua
Člen
Avatar
Mici.naua:

Dobrý den,
nevím si rady s tímto problémem:

Potřeboval bych, aby daný objekt začal dělat nějakou činnost ve chvíli, kdy se jiný objekt (např. hrdina) nachází v nějaké oblasti (např. od x:0 y:0, do x:64 y:64).

Funkci "If there is an object at a position" znám, ale nevím jak ji jinak použít, než jenom na jedno konkrétní místo v místnosti...

Předem děkuji za Vaše názory a odpovědi. ;)

 
Odpovědět 11.12.2011 14:43
Avatar
Odpovídá na Mici.naua
David Jančík [sczdavos]:

Dobrý den,
do objektu, který má začít vykonávat akci při dosažení onoho místa (zadaných souřadnicích) vložíte do step eventu tuto akci, kde zadáte souřadnice místa. Vhodné je pokud chcete tuto akci nastartovat jen jednou nastavit poté proměnnou, která bude určovat zda se již akce provedla. A pokud objekt dosáhne zadané pozice a akce se ještě neprovedla provedou se zadané akce + nastaví se do proměnné, že se již akce provedla.
Přikládám ukázku:
http://dl.dropbox.com/…390b23a7.gmk

Nahoru Odpovědět 11.12.2011 15:24
Čím více času dostaneš, tím méně ho máš.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Mici.naua
David Čápka:

Pokud chcete jen obdelník, stačí tam dát složenou podmínku, něco jako

if ((player.x > 0) && (player.y > 0) && (player.x < 64) && (player.y < 64))
Nahoru Odpovědět  +1 11.12.2011 18:35
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Mici.naua
Člen
Avatar
Mici.naua:

Ano, to je přesně to, co potřebuji - aby tato funkce kontrolovala, zda se objekt v daném obdelníku nachází, či ne.

Jenom si nevím rady, jak tedy takovýto zápis zprovoznit.

Lze to nějak zkombinovat s touto podmínkou?

if place_meeting(x,y,ob­ject0){
//akce
}

 
Nahoru Odpovědět 11.12.2011 23:38
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Mici.naua
David Čápka:

Jak zprovoznit? Úplně nechápu, co máte na mysli, prostě kód vložte do skriptu, je to obyčejná podmínka. Kombinovat samozřejmě jde (proč by nešla?) buď ji napište před váš kód nebo do ní přidejte další závorku s operátorem && (and, čili a zároveň musí platit), případně s || (nebo).

Pokud se ptáte na zprovoznění pomocí ikonek, dejte si 4x podmínku pod sebe (ikona Test variable), např. 1. bude vypadat takto:

object: player
variable: x
value: 0
operation: larger than

Pod to dáte další 3 z těch závorek výše, to jistě domyslíte. Nebo je tam obecná ikona Test expression a do ní můžete dát celý výraz bez slova if.

Mimochodem, zamozřejmě by šlo i udělat si sprite 64x64 pixelů, dát ho objektu, kterému nastavit visible na false a kontrolovat s ním kolizi.

Nahoru Odpovědět 12.12.2011 9:29
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Mici.naua
Člen
Avatar
Odpovídá na David Čápka
Mici.naua:

S tím spritem jako objekt, u kterého by se kontrolovala kolize, to mě napadlo také. Ale já tento případ potřebuji na více místech v místnosti, a ty rozměry jsou vždy jiné, takže jsem nechtěl dělat na každé místo objekt zvlášť... Myslel jsem, že by to zbytečně brzdilo hru.

Jinak děkuji za odpovědi, zkusím to nějak dát do kupy, kdyžtak vím, kam se mohu obrátit.. ;)

 
Nahoru Odpovědět 12.12.2011 15:43
Avatar
Darkmagic
Redaktor
Avatar
Darkmagic:

Podle mě se s tím moc zabíráte... Já bych normálně udělal neviditelný objekt + kolize, je zbytečný pořát vypisovat proměnné x y, pro každý room zvlášť.....

Nahoru Odpovědět 12.12.2011 16:12
Nejhorší je, když myslíš, že víš
Avatar
Mici.naua
Člen
Avatar
Odpovídá na Darkmagic
Mici.naua:

Samozřejmě, že to je jedna z nejjednodušších možností, která se nabízí. Ale v mém případě (nebudu tu složitě vysvětlovat proč) jsem to takto udělat nemohl.

Nyní jsem už ale problém vyřešil, velice mi pomohla rada od Sdraca, a proto mu patří můj dík.

 
Nahoru Odpovědět 12.12.2011 20:34
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 8 zpráv z 8.