Gdy już utworzysz animację, musisz użyć skryptów, aby włączyć je do swojego doświadczenia. Możesz albo odtwarzać animacje ręcznie z poziomu skryptów, albo zastąpić domyślne animacje dla postaci graczy.
Odtwarzanie animacji ze skryptów
W niektórych przypadkach będziesz musiał odtwarzać 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 sztywnej postaci zawierającej obiekt Humanoid, taki jak typowe postacie graczy, postępuj zgodnie z tym podstawowym schematem:
- 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, ładuje animację "kopnięcia" na postać gracza i ją odtwarza. Skrypt wykorzystuje również metodę GetMarkerReachedSignal(), aby wykryć, kiedy wystąpi określone zdarzenie animacji.
LocalScript - Odtwórz niestandardową animację na postaci gracza
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()
Niehumanoidy
Aby odtworzyć animacje na sztywnych postaciach, które nie zawierają Humanoid, musisz utworzyć AnimationController z dzieckiem Animator. Na przykład, poniższy Script (zakładany jako bezpośrednie dziecko sztywnej postaci) ładuje animację "kopnięcia" i ją odtwarza.
Script - Odtwórz niestandardową animację na sztywnym modelu postaci
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ępowanie domyślnych animacji
Domyślnie postacie graczy w Robloxie zawierają powszechne 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:
- W przypadku niestandardowej animacji zbudowanej za pomocą Animation Editor postępuj zgodnie z instrukcjami dotyczącymi eksportu.
- Skopiuj odpowiedni identyfikator z poniższego odniesienia animacji z katalogu. Na przykład, aby zastąpić domyślną animację biegu wariantem Ninja Run, użyj 656118852.
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, która odnosi 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 wariant 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)
Ustawianie wag animacji
Możesz używać wielu animacji dla tej samej akcji. Na przykład w próbce kodu dotyczącej zastępowania domyślnych animacji istnieją dwie wariacje idle.
Gdy istnieje wiele animacji dla stanu postaci, skrypt Animate losowo wybiera, którą odtworzyć, ale możesz wpłynąć na wynik, ustawiając wartość Weight animacji według następującego wzoru:
- waga animacji / całkowita waga wszystkich animacji stanu
W poniższym przykładzie idle.Animation1 będzie odtwarzana ⅓ czasu, gdy postać jest w stanie bezruchu, podczas gdy idle.Animation2 będzie odtwarzana ⅔ czasu.
Script - Zastąp Domyślne Animacje PostacianimateScript.idle.Animation1.AnimationId = "rbxassetid://656117400"animateScript.idle.Animation2.AnimationId = "rbxassetid://656118341"animateScript.idle.Animation1.Weight.Value = 5animateScript.idle.Animation2.Weight.Value = 10
Odniesienia 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 wariacje, które możesz ważyć, aby odtwarzać je częściej lub rzadziej.
| Akcja postaci | Odwołanie skryptu animacji |
| Bieg | animateScript.run.RunAnim.AnimationId |
| Chodzenie | animateScript.walk.WalkAnim.AnimationId |
| Skok | animateScript.jump.JumpAnim.AnimationId |
| Idle | animateScript.idle.Animation1.AnimationId |
| Upadek | animateScript.fall.FallAnim.AnimationId |
| Pływanie | animateScript.swim.Swim.AnimationId |
| Pływanie (Idle) | animateScript.swimidle.SwimIdle.AnimationId |
| Wspinanie się | animateScript.climb.ClimbAnim.AnimationId |
Animacje z katalogu
Korzystając z zestawów animacji awatara, aby zastąpić domyślne animacje, użyj następujących odniesień dla odpowiednich identyfikatorów zasobów. Na przykład, jeśli chcesz zastosować animację Ninja Jump, użyj 656117878. Zauważ, że Idle ma wiele wariacji.
| Astronaut | Bieg 891636393 Chodzenie 891636393 Skok 891627522 Idle 891621366, 891633237, 1047759695 Upadek 891617961 Pływanie 891639666 Pływanie (Idle) 891663592 Wspinanie się 891609353 |
| Bubbly | Bieg 910025107 Chodzenie 910034870 Skok 910016857 Idle 910004836, 910009958, 1018536639 Upadek 910001910 Pływanie 910028158 Pływanie (Idle) 910030921 Wspinanie się 909997997 |
| Cartoony | Bieg 742638842 Chodzenie 742640026 Skok 742637942 Idle 742637544, 742638445, 885477856 Upadek 742637151 Pływanie 742639220 Pływanie (Idle) 742639812 Wspinanie się 742636889 |
| Elder | Bieg 845386501 Chodzenie 845403856 Skok 845398858 Idle 845397899, 845400520, 901160519 Upadek 845396048 Pływanie 845401742 Pływanie (Idle) 845403127 Wspinanie się 845392038 |
| Knight | Bieg 657564596 Chodzenie 657552124 Skok 658409194 Idle 657595757, 657568135, 885499184 Upadek 657600338 Pływanie 657560551 Pływanie (Idle) 657557095 Wspinanie się 658360781 |
| Levitation | Bieg 616010382 Chodzenie 616013216 Skok 616008936 Idle 616006778, 616008087, 886862142 Upadek 616005863 Pływanie 616011509 Pływanie (Idle) 616012453 Wspinanie się 616003713 |
| Mage | Bieg 707861613 Chodzenie 707897309 Skok 707853694 Idle 707742142, 707855907, 885508740 Upadek 707829716 Pływanie 707876443 Pływanie (Idle) 707894699 Wspinanie się 707826056 |
| Ninja | Bieg 656118852 Chodzenie 656121766 Skok 656117878 Idle 656117400, 656118341, 886742569 Upadek 656115606 Pływanie 656119721 Pływanie (Idle) 656121397 Wspinanie się 656114359 |
| Pirate | Bieg 750783738 Chodzenie 750785693 Skok 750782230 Idle 750781874, 750782770, 885515365 Upadek 750780242 Pływanie 750784579 Pływanie (Idle) 750785176 Wspinanie się 750779899 |
| Robot | Bieg 616091570 Chodzenie 616095330 Skok 616090535 Idle 616088211, 616089559, 885531463 Upadek 616087089 Pływanie 616092998 Pływanie (Idle) 616094091 Wspinanie się 616086039 |
| Rthro | Bieg 2510198475 Chodzenie 2510202577 Skok 2510197830 Idle 2510197257, 2510196951, 3711062489 Upadek 2510195892 Pływanie 2510199791 Pływanie (Idle) 2510201162 Wspinanie się 2510192778 |
| Stylish | Bieg 616140816 Chodzenie 616146177 Skok 616139451 Idle 616136790, 616138447, 886888594 Upadek 616134815 Pływanie 616143378 Pływanie (Idle) 616144772 Wspinanie się 616133594 |
| Superbohater | Bieg 616117076 Chodzenie 616122287 Skok 616115533 Idle 616111295, 616113536, 885535855 Upadek 616108001 Pływanie 616119360 Pływanie (Idle) 616120861 Wspinanie się 616104706 |
| Zabawka | Bieg 782842708 Chodzenie 782843345 Skok 782847020 Idle 782841498, 782845736, 980952228 Upadek 782846423 Pływanie 782844582 Pływanie (Idle) 782845186 Wspinanie się 782843869 |
| Wampir | Bieg 1083462077 Chodzenie 1083473930 Skok 1083455352 Idle 1083445855, 1083450166, 1088037547 Upadek 1083443587 Pływanie 1083464683 Pływanie (Idle) 1083467779 Wspinanie się 1083439238 |
| Wilkołak | Bieg 1083216690 Chodzenie 1083178339 Skok 1083218792 Idle 1083195517, 1083214717, 1099492820 Upadek 1083189019 Pływanie 1083222527 Pływanie (Idle) 1083225406 Wspinanie się 1083182000 |
| Zombie | Bieg 616163682 Chodzenie 616168032 Skok 616161997 Idle 616158929, 616160636, 885545458 Upadek 616157476 Pływanie 616165109 Pływanie (Idle) 616166655 Wspinanie się 616156119 |