Zmiana wyglądu bohatera przez ekwipunek

Był taki okres w historii sceny, gdy zmiana wyglądu bohatera po wyekwipowaniu go w różnorodne stroje była szalenie pożądanym elementem projektów. Całość zazwyczaj rozbijała się o brak grafik, ale też nie pamiętam, by ktoś kiedykolwiek napisał taki skrypt porządnie.

Przygotowania

Od kiedy odpaliliśmy dział z zasobami, brak grafik nie jest wielkim problemem. Proponuję wykorzystać postać pirata z RTP + dwa dodatkowe stroje i wygląd w negliżu.

Musimy jeszcze stworzyć 3 przedmioty typu Body i ustawić jeden jako początkowy ubiór bohatera.

Zmiana wyglądu postaci

Sam skrypt jest bardzo prosty. W common evencie ustawionym na Parallel Process wstawiamy warunek sprawdzający, czy nasz bohater ma założoną daną rzecz. Jeśli tak, zmieniamy jego wygląd komendą Change Actor Graphic. W opcji ELSE sprawdzamy kolejną rzecz i tak aż do wyczerpania wszystkich możliwości. Na koniec, w ostatnim ELSE, ustawiamy postać w negliżu (ponieważ po sprawdzeniu wszystkich opcji wychodzi na to, że bohater nie ma na sobie żadnego ubrania).

Teraz gdy odpalicie swój projekt i zmienicie ubranie naszemu bohaterowi, zmieni się także jego grafika. Ten skrypt posiada jednak dwie zasadnicze wady:

  1. kod działa nieustannie w tle, co może nawet nie powodować lagów, ale jak ognia unikamy takich sytuacji;
  2. po wyjściu z menu musi minąć chwila, żeby postać dostała nową grafikę, przez co wszystko wydaje się dość amatorskie.

Na szczęście można temu zaradzić!

Poprawienie skryptu

Pierwszą wadę jest stosunkowo łatwo wyeliminować – nasz common event ustawiamy na None i będziemy go po prostu wywoływać wtedy, gdy zajdzie taka potrzeba.

Z drugą sprawą sytuacja jest nieco bardziej skomplikowana. Nie jesteśmy w stanie stworzyć takiego kodu, by zmiana grafiki bohatera nastąpiła przed powrotem z menu na mapę. Na szczęście możemy nieco oszukać gracza w tym zakresie.

Musimy stworzyć nowy event z ustawionym Parallel Process. W nim przechwytujemy klawisze (a dokładnie klawisz anulowania odpowiadający za odpalenie menu). Jeśli gracz go wciśnie, odtwarzamy odpowiedni dźwięk, ściemniamy ekran przez 0,1 sekundy oraz wywołujemy menu. Następnie odpalamy naszego common eventa ze zmianą wyglądu i dopiero później ponownie rozjaśniamy ekran, także w czasie 0,1 sekundy. Dzięki temu unikniemy sytuacji, w której gracz zobaczy moment zmiany. Jeśli 0,1 sekundy to za mało, czas ten można zwiększyć.

Gdy teraz uruchomicie swój projekt zauważycie, że pojawiają się pewne problemy z podwójnym wywoływaniem menu. To dlatego, że program raz pokazuje je przez nasz skrypt, a drugi – przez to, że wcisnęliśmy ESC. By temu zaradzić, wystarczy użyć gdzieś komendy Change Menu Access i wyłączyć możliwość zwykłego pokazania menu. Teraz wszystko powinno już działać prawidłowo!

Michał „Michu” Wysocki

– Download przykładowego projektu –

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Wymagane pola są oznaczone *

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.