12.07.2026 01:35

Silnik gier: co po animacji — callback ukończenia i sekwencje

⏱️ 2 min read
Share:

Płynne przejścia wartości (tween) w silniku gier 2D Moonlight Studio dostały to, czego brakowało do prawdziwej reżyserii ruchu: callback ukończenia. Teraz możesz powiedzieć „gdy ten ruch się skończy, zrób to" — a z tego jednego klocka składasz całe sekwencje.

Zrób coś, gdy animacja dobiegnie końca

Wystarczy dodać funkcję na końcu wywołania:

mp.tween(wybuch, "opacity", 0, 0.5, function()
    mp.free(wybuch)          -- zniknął → usuń ze sceny
end)

To rozwiązuje klasyczny wzorzec „zanik, a potem zniszcz": obiekt najpierw gładko znika, i dopiero po zakończeniu przejścia jest sprzątany.

Sekwencje — jeden ruch po drugim

Skoro callback może uruchomić kolejny tween, łańcuchy powstają same, bez żadnego dodatkowego mechanizmu:

-- panel wjeżdża, a gdy dojedzie — lekko podskakuje
mp.tween(panel, "y", 0, 0.3, "ease-out", function()
    mp.tween(panel, "y", -12, 0.12, "ease-out", function()
        mp.tween(panel, "y", 0, 0.12)
    end)
end)

Easing i callback możesz podać w dowolnej kolejności — silnik rozpozna, co jest krzywą, a co funkcją.

Odpala się wtedy, kiedy trzeba — i tylko wtedy

Callback jest prymitywem „ukończenia", nie „upływu czasu", więc jego reguły są jednoznaczne:

  • odpala się dokładnie raz, w chwili naturalnego dojścia do celu,
  • nie odpala się, gdy przerwiesz przejście (mp.stop_tween), gdy nadpiszesz je nowym na tej samej właściwości, ani gdy obiekt zniknie ze sceny w trakcie — bo wtedy ruch się nie „ukończył", tylko został anulowany.

Dzięki temu sekwencja nie „przeskoczy do kroku drugiego", gdy krok pierwszy został odwołany — częsty błąd, gdy ktoś próbuje sklejać animacje zwykłym odliczaniem czasu.

Bezpieczne nawet w trudnych przypadkach

Callback odpala Twój kod, a ten może robić rzeczy, które normalnie są pułapką — założyć kolejny tween tej samej właściwości, anulować inny, usunąć obiekt. Tutaj każdy z tych przypadków jest bezpieczny z założenia: callbacki uruchamiają się dopiero po uporządkowaniu listy aktywnych przejść, więc nic się nie „wywraca". A gdy w jednej klatce kończy się kilka przejść, ich callbacki idą w kolejności założenia — deterministycznie.

Co dalej

To fundament reżyserii ruchu. W kolejce: dedykowany zapis sekwencji (tory równoległe, przerwy między krokami) zbudowany na tym samym callbacku ukończenia.

📚 Related posts

27.08.2026 20:55

Data, której nie cofniemy nawet my

Każdy certyfikat autorstwa dostaje datę zapisaną w blockchainie Bitcoina — takiej nie podważy nikt, my też nie. Sprawdzisz ją bez konta i bez Moonligh...
Continue reading →
27.08.2026 19:35

Twój kolor, wszędzie

Trzy tryby i siedem akcentów, wspólnych dla strony i Moonlight Animate. Motyw jedzie z kontem, profil pokazuje gościom Twoje kolory, a harmonogram sam...
Continue reading →
27.08.2026 18:31

Kto moderuje i na jakiej podstawie

Moderator to teraz osobna rola z własnym zakresem, a nie administrator w przebraniu. Odrzucenie treści wymaga powodu, który trafia do autora razem z d...
Continue reading →

📧 Stay up to date!

Join the waitlist to get notified about new Dev Blog posts and Moonlight platform launch.