Gdy już stworzyłeś animację, musisz użyć skryptów, aby włączyć je do swojej gry. Możesz albo odtwarzać animacje ręcznie poprzez skrypty, albo zastąpić domyślne animacje dla postaci graczy.
Odtwarzaj animacje z poziomu skryptów
W niektórych przypadkach będziesz musiał odtworzyć animację bezpośrednio z poziomu skryptu, na przykład, gdy użytkownik naciśnie określony klawisz lub podniesie specjalny przedmiot.
Humanoidy
Aby odtworzyć animację na rigach zawierających obiekt Humanoid, na przykład typowych postaciach gry, postępuj według tego podstawowego wzoru:
- Utwórz nową instancję Animation z odpowiednim AnimationId.
- Załaduj animację za pomocą Animator:LoadAnimation(), aby utworzyć AnimationTrack.
- Odtwórz ścieżkę za pomocą AnimationTrack:Play().
Na przykład poniższy LocalScript, umieszczony w StarterPlayerScripts, ładował animację "kopnięcia" na postać gracza i ją odtwarzał. Skrypt wykorzystuje również metodę GetMarkerReachedSignal(), aby wykryć, kiedy wydarza się określone zdarzenie animacji.
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
-- Upewnij się, że humanoid postaci zawiera obiekt "Animator"
local humanoid = character:WaitForChild("Humanoid")
local animator = humanoid:WaitForChild("Animator")
-- Utwórz nową instancję "Animation" i przypisz identyfikator zasobu animacji
local kickAnimation = Instance.new("Animation")
kickAnimation.AnimationId = "rbxassetid://2515090838"
-- Załaduj animację na animatora
local kickAnimationTrack = animator:LoadAnimation(kickAnimation)
-- Jeśli zdefiniowano nazwane zdarzenie dla animacji, połącz je z "GetMarkerReachedSignal()"
kickAnimationTrack:GetMarkerReachedSignal("KickEnd"):Connect(function(paramString)
print(paramString)
end)
task.wait(4)
-- Odtwórz ścieżkę animacji
kickAnimationTrack:Play()Non-humanoidy
Aby odtwarzać animacje na rigach, które nie zawierają Humanoid, musisz utworzyć AnimationController z podrzędnym Animator. Na przykład, poniższy Script (przyjęty jako bezpośredni potomny riga) ładuje animację "kopnięcia" i ją odtwarza.
local rig = script.Parent
-- Utwórz nową instancję "Animation" i przypisz identyfikator zasobu animacji
local kickAnimation = Instance.new("Animation")
kickAnimation.AnimationId = "rbxassetid://2515090838"
-- Utwórz nowy "AnimationController" i "Animator"
local animationController = Instance.new("AnimationController")
animationController.Parent = rig
local animator = Instance.new("Animator")
animator.Parent = animationController
-- Załaduj animację na animatora
local kickAnimationTrack = animator:LoadAnimation(kickAnimation)
-- Jeśli zdefiniowano nazwane zdarzenie dla animacji, połącz je z "GetMarkerReachedSignal()"
kickAnimationTrack:GetMarkerReachedSignal("KickEnd"):Connect(function(paramString)
print(paramString)
end)
task.wait(4)
-- Odtwórz ścieżkę animacji
kickAnimationTrack:Play()Zastąp domyślne animacje
Domyślnie, postacie graczy w Robloxie zawierają wspólne animacje, takie jak bieganie, wspinanie się, pływanie i skakanie. Możesz zastąpić te domyślne animacje animacjami z katalogu lub swoimi własnymi niestandardowymi animacjami.
Uzyskaj identyfikator zasobu nowej animacji w następujący sposób:
- Dla niestandardowej animacji zbudowanej za pomocą Animacji Edytora, postępuj zgodnie z instrukcjami eksportu.
- Skopiuj odpowiedni identyfikator z poniższego przewodnika animacji katalogowej. Na przykład, aby zastąpić domyślną animację biegu wersją Ninja Run, użyj 656118852.
W oknie Eksploratora dodaj nowy Script do ServerScriptService.
- Najedź na ServerScriptService i kliknij przycisk ⊕.
- Z menu kontekstowego wstaw Skrypt.
W nowym skrypcie wklej następujący kod:
Script - Zastąp domyślne animacje postacilocal Players = game:GetService("Players")local function onCharacterAdded(character)-- Uzyskaj animatora na humanoidzielocal humanoid = character:WaitForChild("Humanoid")local animator = humanoid:WaitForChild("Animator")-- Zatrzymaj wszystkie ścieżki animacjifor _, playingTrack in animator:GetPlayingAnimationTracks() doplayingTrack:Stop(0)endlocal animateScript = character:WaitForChild("Animate")--animateScript.run.RunAnim.AnimationId = "rbxassetid://"--animateScript.walk.WalkAnim.AnimationId = "rbxassetid://"--animateScript.jump.JumpAnim.AnimationId = "rbxassetid://"--animateScript.idle.Animation1.AnimationId = "rbxassetid://"--animateScript.idle.Animation2.AnimationId = "rbxassetid://"--animateScript.fall.FallAnim.AnimationId = "rbxassetid://"--animateScript.swim.Swim.AnimationId = "rbxassetid://"--animateScript.swimidle.SwimIdle.AnimationId = "rbxassetid://"--animateScript.climb.ClimbAnim.AnimationId = "rbxassetid://"endlocal function onPlayerAdded(player)player.CharacterAppearanceLoaded:Connect(onCharacterAdded)endPlayers.PlayerAdded:Connect(onPlayerAdded)Dla każdej linii odnoszącej się do domyślnej animacji postaci, odkomentuj ją i wklej identyfikator zastępujący po rbxassetid://. Na przykład, aby zmienić domyślną animację biegu na wersję Ninja Run:
Script - Zastąp domyślne animacje postacilocal Players = game:GetService("Players")local function onCharacterAdded(character)-- Uzyskaj animatora na humanoidzielocal humanoid = character:WaitForChild("Humanoid")local animator = humanoid:WaitForChild("Animator")-- Zatrzymaj wszystkie ścieżki animacjifor _, playingTrack in animator:GetPlayingAnimationTracks() doplayingTrack:Stop(0)endlocal animateScript = character:WaitForChild("Animate")animateScript.run.RunAnim.AnimationId = "rbxassetid://656118852"--animateScript.walk.WalkAnim.AnimationId = "rbxassetid://"--animateScript.jump.JumpAnim.AnimationId = "rbxassetid://"--animateScript.idle.Animation1.AnimationId = "rbxassetid://"--animateScript.idle.Animation2.AnimationId = "rbxassetid://"--animateScript.fall.FallAnim.AnimationId = "rbxassetid://"--animateScript.swim.Swim.AnimationId = "rbxassetid://"--animateScript.swimidle.SwimIdle.AnimationId = "rbxassetid://"--animateScript.climb.ClimbAnim.AnimationId = "rbxassetid://"endlocal function onPlayerAdded(player)player.CharacterAppearanceLoaded:Connect(onCharacterAdded)endPlayers.PlayerAdded:Connect(onPlayerAdded)
Ustaw wagi animacji
Możesz używać wielu animacji dla tej samej akcji. Na przykład, w kodzie próbnym dla zastępowania domyślnych animacji istnieją dwie warianty idle.
Gdy dla stanu postaci istnieje wiele animacji, skrypt Animate losowo wybiera, którą odtworzyć, ale możesz wpłynąć na wynik, ustawiając wartość Weight animacji zgodnie z następującym wzorem:
- waga animacji / całkowita waga wszystkich animacji stanu
W poniższym przykładzie idle.Animation1 będzie odtwarzana ⅓ czasu, kiedy postać jest w stanie bezczynności, natomiast idle.Animation2 będzie odtwarzana ⅔ czasu.
animateScript.idle.Animation1.AnimationId = "rbxassetid://656117400"
animateScript.idle.Animation2.AnimationId = "rbxassetid://656118341"
animateScript.idle.Animation1.Weight.Value = 5
animateScript.idle.Animation2.Weight.Value = 10Odniesienia do animacji
Domyślne animacje postaci
Poniższa tabela zawiera wszystkie domyślne animacje postaci, które możesz zastąpić animacjami z katalogu lub swoimi własnymi niestandardowymi animacjami. Zauważ, że Idle ma dwie warianty, które możesz ważyć, aby odtwarzać je częściej lub rzadziej.
| Akcja postaci | Odniesienie skryptu animacji |
| Biegać | animateScript.run.RunAnim.AnimationId |
| Chodzić | animateScript.walk.WalkAnim.AnimationId |
| Skakać | animateScript.jump.JumpAnim.AnimationId |
| Bezczynność | animateScript.idle.Animation1.AnimationId |
| Upaść | animateScript.fall.FallAnim.AnimationId |
| Pływać | animateScript.swim.Swim.AnimationId |
| Pływać (Bezczynność) | animateScript.swimidle.SwimIdle.AnimationId |
| Wspinać się | animateScript.climb.ClimbAnim.AnimationId |
Animacje katalogowe
Kiedy używasz pakietów animacji awatara, aby zastąpić domyślne animacje, użyj następujących odniesień do odpowiednich identyfikatorów zasobów. Na przykład, jeśli chcesz zastosować animację Ninja Jump, użyj 656117878. Zauważ, że Idle ma wiele wariantów.
| Astronauta | Biegać 891636393 Chodzić 891636393 Skakać 891627522 Bezczynność 891621366, 891633237, 1047759695 Upaść 891617961 Pływać 891639666 Pływać (Bezczynność) 891663592 Wspinać się 891609353 |
| Bubbly | Biegać 910025107 Chodzić 910034870 Skakać 910016857 Bezczynność 910004836, 910009958, 1018536639 Upaść 910001910 Pływać 910028158 Pływać (Bezczynność) 910030921 Wspinać się 909997997 |
| Cartoony | Biegać 742638842 Chodzić 742640026 Skakać 742637942 Bezczynność 742637544, 742638445, 885477856 Upaść 742637151 Pływać 742639220 Pływać (Bezczynność) 742639812 Wspinać się 742636889 |
| Elder | Biegać 845386501 Chodzić 845403856 Skakać 845398858 Bezczynność 845397899, 845400520, 901160519 Upaść 845396048 Pływać 845401742 Pływać (Bezczynność) 845403127 Wspinać się 845392038 |
| Knight | Biegać 657564596 Chodzić 657552124 Skakać 658409194 Bezczynność 657595757, 657568135, 885499184 Upaść 657600338 Pływać 657560551 Pływać (Bezczynność) 657557095 Wspinać się 658360781 |
| Levitation | Biegać 616010382 Chodzić 616013216 Skakać 616008936 Bezczynność 616006778, 616008087, 886862142 Upaść 616005863 Pływać 616011509 Pływać (Bezczynność) 616012453 Wspinać się 616003713 |
| Mag | Biegać 707861613 Chodzić 707897309 Skakać 707853694 Bezczynność 707742142, 707855907, 885508740 Upaść 707829716 Pływać 707876443 Pływać (Bezczynność) 707894699 Wspinać się 707826056 |
| Ninja | Biegać 656118852 Chodzić 656121766 Skakać 656117878 Bezczynność 656117400, 656118341, 886742569 Upaść 656115606 Pływać 656119721 Pływać (Bezczynność) 656121397 Wspinać się 656114359 |
| Pirata | Biegać 750783738 Chodzić 750785693 Skakać 750782230 Bezczynność 750781874, 750782770, 885515365 Upaść 750780242 Pływać 750784579 Pływać (Bezczynność) 750785176 Wspinać się 750779899 |
| Robot | Biegać 616091570 Chodzić 616095330 Skakać 616090535 Bezczynność 616088211, 616089559, 885531463 Upaść 616087089 Pływać 616092998 Pływać (Bezczynność) 616094091 Wspinać się 616086039 |
| Rthro | Biegać 2510198475 Chodzić 2510202577 Skakać 2510197830 Bezczynność 2510197257, 2510196951, 3711062489 Upaść 2510195892 Pływać 2510199791 Pływać (Bezczynność) 2510201162 Wspinać się 2510192778 |
| Stylowy | Biegać 616140816 Chodzić 616146177 Skakać 616139451 Bezczynność 616136790, 616138447, 886888594 Upaść 616134815 Pływać 616143378 Pływać (Bezczynność) 616144772 Wspinać się 616133594 |
| Superbohater | Biegać 616117076 Chodzić 616122287 Skakać 616115533 Bezczynność 616111295, 616113536, 885535855 Upaść 616108001 Pływać 616119360 Pływać (Bezczynność) 616120861 Wspinać się 616104706 |
| Zabawka | Biegać 782842708 Chodzić 782843345 Skakać 782847020 Bezczynność 782841498, 782845736, 980952228 Upaść 782846423 Pływać 782844582 Pływać (Bezczynność) 782845186 Wspinać się 782843869 |
| Wampir | Biegać 1083462077 Chodzić 1083473930 Skakać 1083455352 Bezczynność 1083445855, 1083450166, 1088037547 Upaść 1083443587 Pływać 1083464683 Pływać (Bezczynność) 1083467779 Wspinać się 1083439238 |
| Wilkołak | Biegać 1083216690 Chodzić 1083178339 Skakać 1083218792 Bezczynność 1083195517, 1083214717, 1099492820 Upaść 1083189019 Pływać 1083222527 Pływać (Bezczynność) 1083225406 Wspinać się 1083182000 |
| Zombie | Biegać 616163682 Chodzić 616168032 Skakać 616161997 Bezczynność 616158929, 616160636, 885545458 Upaść 616157476 Pływać 616165109 Pływać (Bezczynność) 616166655 Wspinać się 616156119 |