Silnik gier: płynne przejścia między animacjami postaci
Silnik gier 2D Moonlight Studio dostał crossfade animacji szkieletu — przełączenie postaci z jednego ruchu na drugi (stanie → chód → bieg) może teraz przenikać zamiast przeskakiwać. To ten mało zauważalny, a wszechobecny detal: bez niego bohater w jednej klatce stoi, a w następnej ma już nogi w połowie kroku. Oko to wyłapuje jako „szarpnięcie".
Jedna linijka, jeden argument
mp.play_clip(bohater, "chodzi", true, 0.2)
Czwarty argument to czas przejścia w sekundach. Przy przełączeniu program zamraża bieżącą pozę postaci i przez 0,2 s przechodzi z niej do nowego klipu: każda kość obraca się najkrótszym łukiem, a przesunięcia i długości płyną liniowo. Krótkie przejście (0,1–0,25 s) całkowicie zdejmuje „przeskok" między animacjami, a Ty nie ruszasz samych klipów — tylko dokładasz jedną liczbę.
Pominięty argument (albo 0) to przełączenie natychmiastowe — dokładnie jak wcześniej. Stary kod działa bez zmian.
Zaprojektowane, by nie „szarpnąć"
- Przejście się domyka nawet, gdy nowy klip jest jednorazowy (np. „cios") i skończy się w trakcie przenikania — mieszanie dojeżdża do końca zamiast urwać się w pół drogi.
- Ponowne przełączenie w trakcie startuje z bieżącej, już zmieszanej pozy — seria szybkich zmian (stoi → chodzi → biegnie w ułamku sekundy) płynie bez skoków.
- Najkrótszy łuk znaczy, że kość obrócona tuż przy granicy pełnego obrotu przejdzie „na skróty", a nie objedzie całe koło w drugą stronę.
- Liczy się w czasie gry — pauza zamraża przejście, spowolnienie je rozciąga; przenikanie zachowuje się jak reszta świata.
Deterministycznie i wspólnym kodem
Ta sama matematyka miksowania póz, która napędza kontrolery rigu (celowanie, śledzenie, IK), obsługuje teraz również crossfade — jedno źródło prawdy zamiast dwóch osobnych ścieżek. Dzięki temu ta sama klatka daje zawsze tę samą pozę, na każdym komputerze.
Co dalej
Fundament pod drzewo animacji jest gotowy. W kolejce: mieszanie dwóch klipów jednocześnie (dla dłuższych, zsynchronizowanych cykli chodu) oraz krzywe czasowe przejścia (nie tylko liniowe).