Una volta che hai creato un'animazione, devi usare degli script per includerle nel tuo gioco. Puoi riprodurre animazioni manualmente dagli script o sostituire le animazioni predefinite per i personaggi dei giocatori.
Riprodurre animazioni dagli script
In alcuni casi, è necessario riprodurre un'animazione direttamente all'interno di uno script, ad esempio quando un utente preme un tasto specifico o raccoglie un oggetto speciale.
Umani
Per riprodurre un'animazione su un rig contenente un oggetto Humanoid, come i tipici personaggi giocabili, seguire questo schema di base:
- Crea una nuova istanza di Animation con il corretto AnimationId.
- Carica l'animazione tramite Animator:LoadAnimation() per creare un AnimationTrack.
- Riproduci il brano con AnimationTrack:Play().
Ad esempio, il seguente LocalScript, quando posizionato in StarterPlayerScripts, carica un'animazione "calcio" sul personaggio del giocatore e la riproduce. Lo script utilizza anche il metodo GetMarkerReachedSignal() per rilevare quando si verifica un evento di animazione specifico.
LocalScript - Riproduci Animazione Personalizzata sul Personaggio del Giocatore
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
-- Assicurati che il "humanoid" del personaggio contenga un oggetto "Animator"
local humanoid = character:WaitForChild("Humanoid")
local animator = humanoid:WaitForChild("Animator")
-- Crea una nuova istanza di "Animation" e assegna un ID di asset dell'animazione
local kickAnimation = Instance.new("Animation")
kickAnimation.AnimationId = "rbxassetid://2515090838"
-- Carica l'animazione sull'animatore
local kickAnimationTrack = animator:LoadAnimation(kickAnimation)
-- Se è stato definito un evento nominato per l'animazione, collegalo a "GetMarkerReachedSignal()"
kickAnimationTrack:GetMarkerReachedSignal("KickEnd"):Connect(function(paramString)
print(paramString)
end)
task.wait(4)
-- Riproduci il brano dell'animazione
kickAnimationTrack:Play()
Non-umani
Per riprodurre animazioni su rig che non contengono un Humanoid, devi creare un AnimationController con un Animator figlio. Ad esempio, il seguente Script (presunto essere un figlio diretto del rig) carica un'animazione "calcio" e la riproduce.
Script - Riproduci Animazione Personalizzata sul Rig del Personaggio
local rig = script.Parent
-- Crea una nuova istanza di "Animation" e assegna un ID di asset dell'animazione
local kickAnimation = Instance.new("Animation")
kickAnimation.AnimationId = "rbxassetid://2515090838"
-- Crea un nuovo "AnimationController" e "Animator"
local animationController = Instance.new("AnimationController")
animationController.Parent = rig
local animator = Instance.new("Animator")
animator.Parent = animationController
-- Carica l'animazione sull'animatore
local kickAnimationTrack = animator:LoadAnimation(kickAnimation)
-- Se è stato definito un evento nominato per l'animazione, collegalo a "GetMarkerReachedSignal()"
kickAnimationTrack:GetMarkerReachedSignal("KickEnd"):Connect(function(paramString)
print(paramString)
end)
task.wait(4)
-- Riproduci il brano dell'animazione
kickAnimationTrack:Play()
Sostituire le animazioni predefinite
Per impostazione predefinita, i personaggi dei giocatori di Roblox includono animazioni comuni come correre, arrampicarsi, nuotare e saltare. Puoi sostituire queste animazioni predefinite con animazioni del catalogo o con le tue animazioni personalizzate.
Ottieni l'ID dell'asset della nuova animazione come segue:
- Per un'animazione personalizzata creata con l'Animation Editor, segui le istruzioni sull'esportazione.
- Copia un ID appropriato dalla riferimento alle animazioni del catalogo qui sotto. Ad esempio, per sostituire l'animazione di corsa predefinita con la variante Ninja Run, usa 656118852.
Nel nuovo script, incolla il seguente codice:
Script - Sostituire le Animazioni Predefinite del Personaggiolocal Players = game:GetService("Players")local function onCharacterAdded(character)-- Ottieni l'animatore sul humanoidlocal humanoid = character:WaitForChild("Humanoid")local animator = humanoid:WaitForChild("Animator")-- Ferma tutti i brani delle animazionifor _, 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)Per ogni riga che fa riferimento a un'animazione predefinita del personaggio, decommenta e incolla l'ID di sostituzione dopo rbxassetid://. Ad esempio, per cambiare l'animazione di corsa predefinita nella variante Ninja Run:
Script - Sostituire le Animazioni Predefinite del Personaggiolocal Players = game:GetService("Players")local function onCharacterAdded(character)-- Ottieni l'animatore sul humanoidlocal humanoid = character:WaitForChild("Humanoid")local animator = humanoid:WaitForChild("Animator")-- Ferma tutti i brani delle animazionifor _, 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)
Impostare i pesi delle animazioni
Puoi usare più animazioni per la stessa azione. Ad esempio, ci sono due variazioni di idle nel campione di codice per sostituire le animazioni predefinite.
Quando esistono più animazioni per uno stato del personaggio, lo script Animate sceglie casualmente quale riprodurre, ma puoi influenzare il risultato impostando il valore Weight dell'animazione secondo la seguente formula:
- peso dell'animazione / peso totale di tutte le animazioni statali
Nel seguente esempio, idle.Animation1 verrà riprodotto ⅓ delle volte in cui il personaggio è inattivo, mentre idle.Animation2 verrà riprodotto ⅔ delle volte.
Script - Sostituire le Animazioni Predefinite del PersonaggioanimateScript.idle.Animation1.AnimationId = "rbxassetid://656117400"animateScript.idle.Animation2.AnimationId = "rbxassetid://656118341"animateScript.idle.Animation1.Weight.Value = 5animateScript.idle.Animation2.Weight.Value = 10
Riferimenti sulle animazioni
Animazioni predefinite del personaggio
La seguente tabella contiene tutte le animazioni predefinite del personaggio che puoi sostituire con animazioni del catalogo o le tue animazioni personalizzate. Nota che Idle ha due variazioni che puoi pesare per riprodurre più o meno frequentemente.
| Azioni del personaggio | Riferimento allo script Animate |
| Corsa | animateScript.run.RunAnim.AnimationId |
| Camminare | animateScript.walk.WalkAnim.AnimationId |
| Saltare | animateScript.jump.JumpAnim.AnimationId |
| Inattivo | animateScript.idle.Animation1.AnimationId |
| Cadere | animateScript.fall.FallAnim.AnimationId |
| Nuotare | animateScript.swim.Swim.AnimationId |
| Nuotare (Inattivo) | animateScript.swimidle.SwimIdle.AnimationId |
| Arrampicarsi | animateScript.climb.ClimbAnim.AnimationId |
Animazioni del catalogo
Quando usi pacchetti di animazione avatar per sostituire le animazioni predefinite, usa i seguenti riferimenti per gli ID degli asset rispettivi. Ad esempio, se vuoi applicare l'animazione Ninja Jump, usa 656117878. Nota che Idle ha più variazioni.
| Astronauta | Corsa 891636393 Camminare 891636393 Saltare 891627522 Inattivo 891621366, 891633237, 1047759695 Cadere 891617961 Nuotare 891639666 Nuotare (Inattivo) 891663592 Arrampicarsi 891609353 |
| Frizzante | Corsa 910025107 Camminare 910034870 Saltare 910016857 Inattivo 910004836, 910009958, 1018536639 Cadere 910001910 Nuotare 910028158 Nuotare (Inattivo) 910030921 Arrampicarsi 909997997 |
| Cartoon | Corsa 742638842 Camminare 742640026 Saltare 742637942 Inattivo 742637544, 742638445, 885477856 Cadere 742637151 Nuotare 742639220 Nuotare (Inattivo) 742639812 Arrampicarsi 742636889 |
| Anziano | Corsa 845386501 Camminare 845403856 Saltare 845398858 Inattivo 845397899, 845400520, 901160519 Cadere 845396048 Nuotare 845401742 Nuotare (Inattivo) 845403127 Arrampicarsi 845392038 |
| Cavaliere | Corsa 657564596 Camminare 657552124 Saltare 658409194 Inattivo 657595757, 657568135, 885499184 Cadere 657600338 Nuotare 657560551 Nuotare (Inattivo) 657557095 Arrampicarsi 658360781 |
| Levitazione | Corsa 616010382 Camminare 616013216 Saltare 616008936 Inattivo 616006778, 616008087, 886862142 Cadere 616005863 Nuotare 616011509 Nuotare (Inattivo) 616012453 Arrampicarsi 616003713 |
| Mago | Corsa 707861613 Camminare 707897309 Saltare 707853694 Inattivo 707742142, 707855907, 885508740 Cadere 707829716 Nuotare 707876443 Nuotare (Inattivo) 707894699 Arrampicarsi 707826056 |
| Ninja | Corsa 656118852 Camminare 656121766 Saltare 656117878 Inattivo 656117400, 656118341, 886742569 Cadere 656115606 Nuotare 656119721 Nuotare (Inattivo) 656121397 Arrampicarsi 656114359 |
| Pirata | Corsa 750783738 Camminare 750785693 Saltare 750782230 Inattivo 750781874, 750782770, 885515365 Cadere 750780242 Nuotare 750784579 Nuotare (Inattivo) 750785176 Arrampicarsi 750779899 |
| Robot | Corsa 616091570 Camminare 616095330 Saltare 616090535 Inattivo 616088211, 616089559, 885531463 Cadere 616087089 Nuotare 616092998 Nuotare (Inattivo) 616094091 Arrampicarsi 616086039 |
| Rthro | Corsa 2510198475 Camminare 2510202577 Saltare 2510197830 Inattivo 2510197257, 2510196951, 3711062489 Cadere 2510195892 Nuotare 2510199791 Nuotare (Inattivo) 2510201162 Arrampicarsi 2510192778 |
| Elegante | Corsa 616140816 Camminare 616146177 Saltare 616139451 Inattivo 616136790, 616138447, 886888594 Cadere 616134815 Nuotare 616143378 Nuotare (Inattivo) 616144772 Arrampicarsi 616133594 |
| Supereroe | Corsa 616117076 Camminare 616122287 Saltare 616115533 Inattivo 616111295, 616113536, 885535855 Cadere 616108001 Nuotare 616119360 Nuotare (Inattivo) 616120861 Arrampicarsi 616104706 |
| Giocattolo | Corsa 782842708 Camminare 782843345 Saltare 782847020 Inattivo 782841498, 782845736, 980952228 Cadere 782846423 Nuotare 782844582 Nuotare (Inattivo) 782845186 Arrampicarsi 782843869 |
| Vampiro | Corsa 1083462077 Camminare 1083473930 Saltare 1083455352 Inattivo 1083445855, 1083450166, 1088037547 Cadere 1083443587 Nuotare 1083464683 Nuotare (Inattivo) 1083467779 Arrampicarsi 1083439238 |
| Lupo Mannaro | Corsa 1083216690 Camminare 1083178339 Saltare 1083218792 Inattivo 1083195517, 1083214717, 1099492820 Cadere 1083189019 Nuotare 1083222527 Nuotare (Inattivo) 1083225406 Arrampicarsi 1083182000 |
| Zombie | Corsa 616163682 Camminare 616168032 Saltare 616161997 Inattivo 616158929, 616160636, 885545458 Cadere 616157476 Nuotare 616165109 Nuotare (Inattivo) 616166655 Arrampicarsi 616156119 |