Wintermute Engine Forum

Czech forum => Technické fórum => Topic started by: pirko7 on May 15, 2010, 02:13:08 PM

Title: Běhání actora
Post by: pirko7 on May 15, 2010, 02:13:08 PM
Ahoj, chtěl bych se zeptat jestli jde naprogramovat jednoduše běhání actora při dvojkliku a jak? Jedná se o 2D adventuru. Slovem jednoduše myslím to, že nebudu muset psát do každého scriptu předmětu na sceně, nějakou podmínku. Je to možné naprogramovat to a mít od toho klid?  :)
Title: Re: Běhání actora
Post by: metamorphium on May 15, 2010, 03:37:59 PM
ano. Stačí změnit scene.script, který je v data\scripts\scene.script

Když jsem to tehdy dělal, pamatuju si, že jsem u "LeftClick" musel vložit čekání, aby se mi nemotal dohromady LeftClick a LeftDoubleClick. Teprve pokud se do určité doby nezavolal LeftDoubleClick, zavolala se klasická chůze.
Title: Re: Běhání actora
Post by: pirko7 on May 15, 2010, 07:51:20 PM
A fungovalo to i na jednotlivé přeměty nebo pouze na floor? Mohl bych poprosit o podrobnější vysvětlení? Mě napadlo přidat další animaci do *.actor. Pojmenovat třeba run.
A pak do scene.script ve šložce GAME, přidat "tohle":


on "LeftDoubleClick"
{
  actor.RunTo(Scene.MouseX, Scene.MouseY);
}

Ovšem tohle by asi fungovalo jenom u 3d projektu a pouze na floor.  :(
Title: Re: Běhání actora
Post by: Andrej (Blue Arc) on May 16, 2010, 02:19:48 PM
Ano, funguje to aj na jednotlivé predmety, nakoľko aj v prípade metódy RunTo() voláš metódu GoTo(), ktorú engine využíva ako pathfinding medzi hot-spotom actora a súradnicami kurzoru na mieste, kde si klikol.

Napadla Ťa dobrá myšlienka, ako to vyriešiť. Kedže riešiš 2D, potrebuješ si vytvoriť samostatnú animáciu behu. Odporúčam nemiešať to pôvodnej postavy, ale vytvoriť si novú postavu, napríklad kulivocko_beh.actor  :)

V game.script by som načítal do pamäti túto novú postavu, napr.:

global kulivocko_beh = Game.LoadActor("actors\kulivocko_beh\kulivocko_beh.actor");

Potom už len upravíš scene.script tak, aby reagoval na na LeftDoubleClick, napríklad

on "LeftDoubleClick"
{
  kulivocko_beh.GoTo(Scene.MouseX, Scene.MouseY);
}
Title: Re: Běhání actora
Post by: Andrej (Blue Arc) on May 17, 2010, 09:19:13 AM
Potom ešte nezabudni, že si to musíš ošetriť tak, aby sa Ti to nemiešalo dokopy.
Title: Re: Běhání actora
Post by: Mnemonic on May 17, 2010, 09:42:08 AM
Odporúčam nemiešať to pôvodnej postavy, ale vytvoriť si novú postavu, napríklad kulivocko_beh.actor  :)
Proč to? Já myslím, že je jednodušší mít všechno pěkně pohromadě, než řešit nějakého falešného druhého actora.
Title: Re: Běhání actora
Post by: Andrej (Blue Arc) on May 17, 2010, 11:36:35 AM
Odporúčam nemiešať to pôvodnej postavy, ale vytvoriť si novú postavu, napríklad kulivocko_beh.actor  :)
Proč to? Já myslím, že je jednodušší mít všechno pěkně pohromadě, než řešit nějakého falešného druhého actora.

Beriem späť. Teraz som nazrel do dokumentácie, kde som si prečítal toto:

Or you can create custom versions of the standard animations (for example a "run" animation to replace "walk") and switch them at runtime using the actor.TalkAnimName, actor.IdleAnimName, actor.WalkAnimName, actor.TurnLeftAnimName and actor.TurnRightAnimName properties.


Prepáč Pirko, nebolo mojím zámerom zle poradiť, ale už som s 2D dosť dlho nerobil, preto ma nenapadlo, že toto WME podporuje :).
Title: Re: Běhání actora
Post by: pirko7 on May 17, 2010, 06:17:21 PM
V pořádku  ;) děkuju za každou radu, kdyť nejsme stroje aby jsme vše věděli s přesností. Já bych ale chtěl metodu bez používání dvou aktorů. Ve 3D jsem zkoušel pomocí jednoho open source projektu nastavit běhání. Duble click do scene.scriptu. Ale stalo se to čeho se tu obávám, scena má sice nastavený na duble klik běhání. Ovšem dvojklik na předmět nereaguje a postava neběhá. A moc si neplánuju že bych to na každý objekt psal pro duble click.   0:)
Jak to teda udělat v 2D projektu bez toho abych musel nastavovat každou entitu?