Zodra je een animatie hebt gemaakt, moet je scripts gebruiken om ze in je spel op te nemen. Je kunt animaties ofwel handmatig afspelen vanuit scripts of standaardanimaties vervangen voor spelerspersonages.
Animaties afspelen vanuit scripts
In sommige gevallen moet je een animatie rechtstreeks vanuit een script afspelen, bijvoorbeeld wanneer een gebruiker een bepaalde toets indrukt of een speciaal item oppakt.
Humanoïden
Om een animatie af te spelen op een rig die een Humanoid object bevat, zoals typische speelbare personages, volg je dit basispatroon:
- Maak een nieuwe Animation instantie met de juiste AnimationId.
- Laad de animatie via Animator:LoadAnimation() om een AnimationTrack te creëren.
- Speel de track af met AnimationTrack:Play().
Bijvoorbeeld, de volgende LocalScript, wanneer geplaatst in StarterPlayerScripts, laadt een "kick" animatie op het personage van de speler en speelt deze af. Het script maakt ook gebruik van de GetMarkerReachedSignal() methode om te detecteren wanneer een specifieke animatie-evenement plaatsvindt.
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
-- Zorg ervoor dat het humanoïde van het personage een "Animator" object bevat
local humanoid = character:WaitForChild("Humanoid")
local animator = humanoid:WaitForChild("Animator")
-- Maak een nieuwe "Animation" instantie en wijs een animatie asset ID toe
local kickAnimation = Instance.new("Animation")
kickAnimation.AnimationId = "rbxassetid://2515090838"
-- Laad de animatie op de animator
local kickAnimationTrack = animator:LoadAnimation(kickAnimation)
-- Als er een benoemd evenement is gedefinieerd voor de animatie, verbind het met "GetMarkerReachedSignal()"
kickAnimationTrack:GetMarkerReachedSignal("KickEnd"):Connect(function(paramString)
print(paramString)
end)
task.wait(4)
-- Speel de animatietrack af
kickAnimationTrack:Play()Niet-humanoïden
Om animaties af te spelen op rigs die geen Humanoid bevatten, moet je een AnimationController maken met een kind Animator. Bijvoorbeeld, de volgende Script (aangenomen dat het een directe kind van de rig is) laadt een "kick" animatie en speelt deze af.
local rig = script.Parent
-- Maak een nieuwe "Animation" instantie en wijs een animatie asset ID toe
local kickAnimation = Instance.new("Animation")
kickAnimation.AnimationId = "rbxassetid://2515090838"
-- Maak een nieuwe "AnimationController" en "Animator"
local animationController = Instance.new("AnimationController")
animationController.Parent = rig
local animator = Instance.new("Animator")
animator.Parent = animationController
-- Laad de animatie op de animator
local kickAnimationTrack = animator:LoadAnimation(kickAnimation)
-- Als er een benoemd evenement is gedefinieerd voor de animatie, verbind het met "GetMarkerReachedSignal()"
kickAnimationTrack:GetMarkerReachedSignal("KickEnd"):Connect(function(paramString)
print(paramString)
end)
task.wait(4)
-- Speel de animatietrack af
kickAnimationTrack:Play()Standaardanimaties vervangen
Standaard bevatten Roblox-spelerspersonages veelvoorkomende animaties zoals rennen, klimmen, zwemmen en springen. Je kunt deze standaardanimaties vervangen door animaties uit de catalogus of door je eigen aangepaste animaties.
Verkrijg de asset ID van de nieuwe animatie als volgt:
- Voor een aangepaste animatie gemaakt met de Animatie-editor, volg de export instructies.
- Kopieer een geschikte ID uit de catalogus animatie referentie hieronder. Bijvoorbeeld, om de standaard loopanimatie te vervangen door de Ninja Run variant, gebruik 656118852.
Plak in het nieuwe script de volgende code:
Script - Vervang Standaard Personage Animatieslocal Players = game:GetService("Players")local function onCharacterAdded(character)-- Verkrijg animator op humanoïdelocal humanoid = character:WaitForChild("Humanoid")local animator = humanoid:WaitForChild("Animator")-- Stop alle animatietracksfor _, 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)Voor elke regel die verwijst naar een standaard personage animatie, verwijder de commentaar en plak de vervangings-ID na rbxassetid://. Bijvoorbeeld, om de standaard loopanimatie te veranderen naar de Ninja Run variant:
Script - Vervang Standaard Personage Animatieslocal Players = game:GetService("Players")local function onCharacterAdded(character)-- Verkrijg animator op humanoïdelocal humanoid = character:WaitForChild("Humanoid")local animator = humanoid:WaitForChild("Animator")-- Stop alle animatietracksfor _, 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)
Stel animatiewaarden in
Je kunt meerdere animaties voor dezelfde actie gebruiken. Bijvoorbeeld, er zijn twee idle variaties in de codevoorbeeld voor het vervangen van standaardanimaties.
Wanneer meerdere animaties bestaan voor een karakterstatus, kiest het Animate script willekeurig welke af te spelen, maar je kunt de uitkomst beïnvloeden door de Weight waarde van de animatie in te stellen volgens de volgende formule:
- animatiegewicht / totaal gewicht van alle statusanimaties
In het volgende voorbeeld zal idle.Animation1 ⅓ van de tijd afspelen wanneer het karakter idle is, terwijl idle.Animation2 ⅔ van de tijd zal afspelen.
animateScript.idle.Animation1.AnimationId = "rbxassetid://656117400"
animateScript.idle.Animation2.AnimationId = "rbxassetid://656118341"
animateScript.idle.Animation1.Weight.Value = 5
animateScript.idle.Animation2.Weight.Value = 10Animatiereferenties
Standaard personage animaties
De volgende tabel bevat alle standaard personage animaties die je kunt vervangen met catalogus animaties of je eigen aangepaste animaties. Let op dat Idle twee variaties heeft die je kunt wegen om vaker of minder vaak af te spelen.
| Personage actie | Animate script referentie |
| Rennen | animateScript.run.RunAnim.AnimationId |
| Lopen | animateScript.walk.WalkAnim.AnimationId |
| Springen | animateScript.jump.JumpAnim.AnimationId |
| Idle | animateScript.idle.Animation1.AnimationId |
| Vallen | animateScript.fall.FallAnim.AnimationId |
| Zwemmen | animateScript.swim.Swim.AnimationId |
| Zwemmen (Idle) | animateScript.swimidle.SwimIdle.AnimationId |
| Klimmen | animateScript.climb.ClimbAnim.AnimationId |
Catalogus animaties
Bij het gebruik van avatar animatiebundels om standaardanimaties te vervangen, gebruik de volgende referenties voor de respectieve asset ID's. Bijvoorbeeld, als je de Ninja Jump animatie wilt toepassen, gebruik dan 656117878. Let op dat Idle meerdere variaties heeft.
| Astronaut | Rennen 891636393 Lopen 891636393 Springen 891627522 Idle 891621366, 891633237, 1047759695 Vallen 891617961 Zwemmen 891639666 Zwemmen (Idle) 891663592 Klimmen 891609353 |
| Bubbly | Rennen 910025107 Lopen 910034870 Springen 910016857 Idle 910004836, 910009958, 1018536639 Vallen 910001910 Zwemmen 910028158 Zwemmen (Idle) 910030921 Klimmen 909997997 |
| Cartoony | Rennen 742638842 Lopen 742640026 Springen 742637942 Idle 742637544, 742638445, 885477856 Vallen 742637151 Zwemmen 742639220 Zwemmen (Idle) 742639812 Klimmen 742636889 |
| Elder | Rennen 845386501 Lopen 845403856 Springen 845398858 Idle 845397899, 845400520, 901160519 Vallen 845396048 Zwemmen 845401742 Zwemmen (Idle) 845403127 Klimmen 845392038 |
| Knight | Rennen 657564596 Lopen 657552124 Springen 658409194 Idle 657595757, 657568135, 885499184 Vallen 657600338 Zwemmen 657560551 Zwemmen (Idle) 657557095 Klimmen 658360781 |
| Levitation | Rennen 616010382 Lopen 616013216 Springen 616008936 Idle 616006778, 616008087, 886862142 Vallen 616005863 Zwemmen 616011509 Zwemmen (Idle) 616012453 Klimmen 616003713 |
| Mage | Rennen 707861613 Lopen 707897309 Springen 707853694 Idle 707742142, 707855907, 885508740 Vallen 707829716 Zwemmen 707876443 Zwemmen (Idle) 707894699 Klimmen 707826056 |
| Ninja | Rennen 656118852 Lopen 656121766 Springen 656117878 Idle 656117400, 656118341, 886742569 Vallen 656115606 Zwemmen 656119721 Zwemmen (Idle) 656121397 Klimmen 656114359 |
| Pirate | Rennen 750783738 Lopen 750785693 Springen 750782230 Idle 750781874, 750782770, 885515365 Vallen 750780242 Zwemmen 750784579 Zwemmen (Idle) 750785176 Klimmen 750779899 |
| Robot | Rennen 616091570 Lopen 616095330 Springen 616090535 Idle 616088211, 616089559, 885531463 Vallen 616087089 Zwemmen 616092998 Zwemmen (Idle) 616094091 Klimmen 616086039 |
| Rthro | Rennen 2510198475 Lopen 2510202577 Springen 2510197830 Idle 2510197257, 2510196951, 3711062489 Vallen 2510195892 Zwemmen 2510199791 Zwemmen (Idle) 2510201162 Klimmen 2510192778 |
| Stylish | Rennen 616140816 Lopen 616146177 Springen 616139451 Idle 616136790, 616138447, 886888594 Vallen 616134815 Zwemmen 616143378 Zwemmen (Idle) 616144772 Klimmen 616133594 |
| Superhero | Rennen 616117076 Lopen 616122287 Springen 616115533 Idle 616111295, 616113536, 885535855 Vallen 616108001 Zwemmen 616119360 Zwemmen (Idle) 616120861 Klimmen 616104706 |
| Toy | Rennen 782842708 Lopen 782843345 Springen 782847020 Idle 782841498, 782845736, 980952228 Vallen 782846423 Zwemmen 782844582 Zwemmen (Idle) 782845186 Klimmen 782843869 |
| Vampire | Rennen 1083462077 Lopen 1083473930 Springen 1083455352 Idle 1083445855, 1083450166, 1088037547 Vallen 1083443587 Zwemmen 1083464683 Zwemmen (Idle) 1083467779 Klimmen 1083439238 |
| Werewolf | Rennen 1083216690 Lopen 1083178339 Springen 1083218792 Idle 1083195517, 1083214717, 1099492820 Vallen 1083189019 Zwemmen 1083222527 Zwemmen (Idle) 1083225406 Klimmen 1083182000 |
| Zombie | Rennen 616163682 Lopen 616168032 Springen 616161997 Idle 616158929, 616160636, 885545458 Vallen 616157476 Zwemmen 616165109 Zwemmen (Idle) 616166655 Klimmen 616156119 |