Zdravím zase. Riešim jeden docela problém, ktorý mi zase nedáva logiku. Situácia je jednoduchá. Mám v hre dvere, ktoré potrebujem otvoriť. Po kliknutí na dvere sa začnú otvárať - to jest spustí sa animácia otvárania dverí a zostanú otvorené. Ja som to riešil nasledovne:
1) Na začiatku sú zobrazené zatvorené dvere - entita s názvom ,,Dovnutra"
2) Pri kliknutí sa presne na tom istom mieste zobrazí entita ,,Otvorenie" - animácia kde sa otvárajú dvere. Ešte predtým sa ale vymaže pôvodná entita ,,Dovnutra".
3) Po prehratí animácie otvorenia dverí zmažem entitu ,,Otvorenie" a zobrazím entitu ,,dvere_otvorene", čo je len 1 obrázok - posledný z animácie otvárania dverí.
Je to pomerne komplikovaný spôsob aj keď docela logický, no nefunguje to ako by malo! Problém je, že sa to všetko vykoná v závislosti od rýchlosti procesora za pár stotín a animácia otvorenia dverí sa nestihne prehrať. Ako zabezpečiť aby hra počkala, kým sa neotvoria dvere, tj. kým neskončí animácia otvárania? Skúšal som to napr. tak, že som za tým vložil funkciu Sleep(2500); kde som dal 2500 ako dĺžku animácie otvárania. Hra zamrzla na Sleep a ďalej sa nepohla.
Zmazanie entity Otvorenie a následné nahranie už otvorených dverí som riešil pre to, lebo pri opustení scény a následnom návrate by sa entita ,,Otvorenie" vždy prehrala, a stále by sa otvárali dvere pri príchode do scény dokola.
Postnem časť mojho kódu. Ako by ste to riešili vy?
.....
EntDovnutra.Active = false; // odstránenie pôvodných dverí
// Game.Interactive = false;
EntOtvorenie = Scene.LoadEntity("objekty\dvere\dvere.entity");
EntOtvorenie.active = true;
EntOtvorenie.SkipTo(515, 211); // prehranie animácie otvárania dverí
//Game.Interactive = false;
//Sleep(2500); (program pri tomto zastaví/zacyklí)
//Game.Interactive = true;
Game.DeleteEntity(EntOtvorenie); // odstránenie entity otvárania dverí
EntOtvorenie.active = false;
dvere_otvorene = Scene.LoadEntity("objekty\dvere_otvorene\dvere_otvorene.entity");
dvere_otvorene.active = true;
dvere_otvorene.SkipTo(515, 211); // zobrazenie jednoduchej entity - obrázku otvorených dverí
.....