This translation is community contributed and may not be up to date. We only maintain the English version of the documentation. Read this manual in English
Animacja szkieletowa modeli 3D wykorzystuje kości modelu do deformowania wierzchołków w siatce modelu.
Szczegóły dotyczące importowania danych 3D do komponentu Model na potrzeby animacji znajdziesz w dokumentacji Model.

Modele animuje się za pomocą funkcji model.play_anim():
function init(self)
-- Uruchom animację "wiggle" w tę i z powrotem na komponencie #model
model.play_anim("#model", "wiggle", go.PLAYBACK_LOOP_PINGPONG)
end
Defold obecnie obsługuje tylko animacje wypieczone (baked animations). Animacje muszą zawierać macierze dla każdej animowanej kości na każdej klatce kluczowej, a nie osobne klucze pozycji, rotacji i skali.
Animacje są też interpolowane liniowo. Jeśli potrzebujesz bardziej zaawansowanej interpolacji krzywych, musisz wypiec animację wcześniej, w eksporcie.
Kości w szkielecie modelu są wewnętrznie reprezentowane jako obiekty gry (game objects).
W czasie działania gry możesz pobrać identyfikator obiektu gry odpowiadającego danej kości za pomocą funkcji model.get_go().
-- Pobierz obiekt gry dla środkowej kości modelu wiggler
local bone_go = model.get_go("#wiggler", "Bone_002")
-- Potem wykonaj na nim potrzebną operację...
Oprócz używania model.play_anim() do sterowania animacją komponenty Model udostępniają właściwość “cursor”, którą można animować za pomocą go.animate() (więcej w sekcji animacje właściwości).
-- Ustaw animację na komponencie #model, ale jej nie uruchamiaj
model.play_anim("#model", "wiggle", go.PLAYBACK_NONE)
-- Ustaw kursor na początku animacji
go.set("#model", "cursor", 0)
-- Animuj kursor między 0 a 1 w trybie pingpong z easingiem in-out quad
go.animate("#model", "cursor", go.PLAYBACK_LOOP_PINGPONG, 1, go.EASING_INOUTQUAD, 3)
Funkcja model.play_anim() obsługuje opcjonalny callback Lua jako ostatni argument. Zostaje on wywołany, gdy animacja dobiegnie końca. Nie jest wywoływany dla animacji zapętlonych ani wtedy, gdy anulujesz animację ręcznie przez go.cancel_animations(). Callback możesz wykorzystać do uruchamiania zdarzeń po zakończeniu animacji albo do łączenia kilku animacji w sekwencję.
local function wiggle_done(self, message_id, message, sender)
-- Zakończono animację
end
function init(self)
model.play_anim("#model", "wiggle", go.PLAYBACK_ONCE_FORWARD, nil, wiggle_done)
end
Animacje można odtwarzać raz albo w pętli. Sposób ich odtwarzania zależy od wybranego trybu:
go.PLAYBACK_NONEgo.PLAYBACK_ONCE_FORWARDgo.PLAYBACK_ONCE_BACKWARDgo.PLAYBACK_ONCE_PINGPONGgo.PLAYBACK_LOOP_FORWARDgo.PLAYBACK_LOOP_BACKWARDgo.PLAYBACK_LOOP_PINGPONG