Inizia
Tutorial intermedi

Riprodurre animazioni dei personaggi

*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.

Riprodurre animazioni dei personaggi è una parte importante di ciò che rende gli avatar e i personaggi non giocanti (NPC) espressivi, realistici e coinvolgenti per il tuo pubblico. Oltre a fornire effetti visivi immersivi, le animazioni dei personaggi forniscono ai giocatori feedback sulle loro azioni, indicazioni su come navigare nell'ambiente e informazioni vitali sul proprio personaggio e sugli altri.

Utilizzando il file .rbxl Hazardous Space Station come riferimento, questo tutorial ti mostra come riprodurre animazioni dei personaggi utilizzando due tecniche diverse, inclusi suggerimenti su:

  • Scambiare gli ID delle risorse delle animazioni predefinite con le tue animazioni personalizzate.
  • Attivare animazioni in risposta alle azioni del personaggio all'interno dello spazio 3D.

Dopo aver completato questo tutorial, avrai le competenze per personalizzare le animazioni per una vasta gamma di situazioni di gioco.

Modifica delle animazioni predefinite

Ogni personaggio con un oggetto Humanoid predefinito, sia esso un avatar controllato dal giocatore o un personaggio non giocante (NPC), include un insieme di animazioni predefinite che vengono riprodotte ogni volta che il personaggio esegue azioni specifiche all'interno dell'esperienza, come correre, arrampicarsi e saltare. Roblox fornisce queste animazioni di default per ogni esperienza senza alcuno sforzo di scripting aggiuntivo.

Animazione di Caduta Predefinita
Animazione di Nuoto Predefinita
Animazione di Arrampicata Predefinita

Tuttavia, se queste animazioni predefinite non soddisfano i requisiti di design per l'ambiente, l'estetica o la narrativa complessiva del tuo mondo, puoi sostituirle con animazioni personalizzate che si applicano a ogni giocatore che partecipa alla tua esperienza.

Per dimostrare, la sezione seguente ti insegnerà come sostituire l'animazione di camminata predefinita con un'animazione del ciclo di camminata personalizzata da Crea Animazioni per il Personaggio. Utilizzando questo stesso processo, puoi sostituire qualsiasi delle animazioni predefinite con i tuoi ID di risorse delle animazioni.

Animazione di Camminata Predefinita
Animazione di Camminata Personalizzata

Crea script

Ogni oggetto Humanoid di un personaggio include un oggetto figlio Animator che memorizza tutte le animazioni predefinite del personaggio. Per impostare uno qualsiasi di questi ID delle animazioni predefinite a nuovi ID delle risorse, devi creare uno script in ServerScriptService così può fare riferimento e sovrascrivere i valori predefiniti dell'oggetto Animator non appena i giocatori si caricano nell'esperienza.

Per creare uno script che farà riferimento agli ID delle risorse delle animazioni predefinite:

  1. Nella finestra Explorer, aggiungi un nuovo script a ServerScriptService.

    1. Passa sopra ServerScriptService e clicca sul pulsante ⊕.
    2. Dal menu contestuale, inserisci uno Script.
  2. Nel nuovo script, incolla il seguente codice:


    local Players = game:GetService("Players")
    local function onCharacterAdded(character)
    local humanoid = character:WaitForChild("Humanoid")
    local animator = humanoid:WaitForChild("Animator")
    print("Animator trovato!")
    end
    local function onPlayerAdded(player)
    player.CharacterAdded:Connect(onCharacterAdded)
    end
    Players.PlayerAdded:Connect(onPlayerAdded)

Lo script ResetDefaultAnimations inizia ottenendo il servizio Players, che contiene tutti gli oggetti Player per i giocatori mentre si connettono a un server. Quando i personaggi di ciascun giocatore si caricano nell'esperienza, la funzione onCharacterAdded attende fino a quando non rileva gli oggetti Humanoid e Animator del personaggio.

Quando rileva un oggetto Animator per la prima volta, lo script stampa "Animator trovato!" per farti sapere che lo script sta funzionando come previsto.

Sostituisci ID delle risorse

Ora che sai che il tuo script è in grado di rilevare quando i giocatori si caricano e si connettono al server, puoi modificare il tuo script per fare riferimento specificamente agli ID delle animazioni che vuoi scambiare con le tue animazioni personalizzate.

La seguente tabella contiene tutte le animazioni predefinite dei personaggi che puoi chiamare e sostituire all'interno dell'oggetto Animator. Nota che Idle ha due varianti che puoi programmare per riprodurre più o meno frequentemente.

Azione del PersonaggioRiferimento Script Animato
CorrereanimateScript.run.RunAnim.AnimationId
CamminareanimateScript.walk.WalkAnim.AnimationId
SaltareanimateScript.jump.JumpAnim.AnimationId
Idle

animateScript.idle.Animation1.AnimationId
animateScript.idle.Animation2.AnimationId

CadereanimateScript.fall.FallAnim.AnimationId
NuotareanimateScript.swim.Swim.AnimationId
Nuotare (Idle)animateScript.swimidle.SwimIdle.AnimationId
ArrampicarsianimateScript.climb.ClimbAnim.AnimationId

Per sostituire l'ID dell'animazione di camminata predefinita:

  1. Chiama il riferimento dello script animato di camminata predefinito, quindi sostituisci l'ID delle risorse con il tuo ID di risorse dell'animazione personalizzata. Ad esempio, il seguente esempio di codice fa riferimento all'animazione del ciclo di camminata da Crea Animazioni per il Personaggio.


    local Players = game:GetService("Players")
    local function onCharacterAdded(character)
    local humanoid = character:WaitForChild("Humanoid")
    local animator = humanoid:WaitForChild("Animator")
    print("Animator trovato!")
    local animateScript = character:WaitForChild("Animate")
    animateScript.walk.WalkAnim.AnimationId = "rbxassetid://122652394532816"
    end
    local function onPlayerAdded(player)
    player.CharacterAdded:Connect(onCharacterAdded)
    end
    Players.PlayerAdded:Connect(onPlayerAdded)
  2. Testa la tua esperienza per assicurarti che la tua animazione di camminata personalizzata sovrascriva l'animazione predefinita.

    1. Scegli Test dal menu a discesa e clicca sul pulsante Play a destra per iniziare il playtest.

      Opzione Test nel menu di testing a discesa della mezzanina di Studio.
    2. Cammina intorno alla stazione spaziale con il tuo avatar.

Attivare animazioni

Mentre la tecnica precedente si concentra sullo scambio delle animazioni predefinite che vengono riprodotte automaticamente ogni volta che un personaggio esegue azioni specifiche nell'esperienza, puoi attivare programmaticamente animazioni da riprodurre in risposta a qualsiasi azione del personaggio all'interno dello spazio 3D, come raccogliere un oggetto o subire danni da un pericolo.

In questo esempio, quando i giocatori toccano la piattaforma dorata, attivano un'animazione di danza non predefinita del personaggio.

Questo metodo di riproduzione delle animazioni è utile perché fornisce ai giocatori un feedback immediato su come dovrebbero interagire con gli oggetti nel loro ambiente. Per dimostrare, la sezione seguente ti mostra come attivare un'animazione ogni volta che i personaggi sono troppo vicini a perdite di vapore pericoloso come modo per insegnare subtlety ai giocatori a evitare di avvicinarsi troppo alle pareti.

Inserisci volume

Uno dei modi più comuni per attivare comportamenti di gioco unici è utilizzare volumi, o aree invisibili all'interno dello spazio 3D, per rilevare quando i personaggi o gli oggetti interagiscono con aree specifiche dell'ambiente. Quando abbini i volumi con gli script, puoi utilizzare il loro feedback di collisione per attivare programmaticamente azioni, come ridurre la salute del giocatore o riprodurre un'animazione.

Una vista lontana di una stanza di un mansion. Un contorno di una scatola è al centro della stanza per significare il volume che attiva eventi di gioco.
Il Mistero di Duvall Drive utilizza volumi per attivare eventi di gioco che cambiano l'aspetto visivo della stanza.

Quando aggiungi un volume alla tua esperienza, è importante scalare in modo che copra solo lo spazio che vuoi utilizzi per attivare la tua animazione. Se rendi il tuo volume troppo piccolo, i giocatori potrebbero non mai collidere con l'area per riprodurre l'animazione; al contrario, se rendi il tuo volume troppo grande, l'animazione verrà riprodotta prima che i giocatori raggiungano l'oggetto o l'area di interesse, e potrebbero non comprendere cosa hanno fatto per attivare l'animazione.

Per inserire un volume attorno a una perdita di vapore che attiverà un'animazione:

  1. Nella finestra Explorer, aggiungi un nuovo blocco.
  2. Posiziona e ridimensiona il blocco fino a coprire l'area che desideri attivare per la tua animazione.
  3. Nella finestra Properties,
    1. Imposta il Nome a AnimationDetector.

    2. Imposta la Trasparenza a 1 per rendere invisibile il blocco.

      Un contorno di un blocco è visibile attorno a una bocchetta di vapore per significare la posizione del volume.

Crea script

Ora che hai una regione definita per attivare la tua animazione, è tempo di creare uno script che rilevi programmaticamente ogni volta che i giocatori collidono con il volume. Puoi quindi ascoltare eventi di collisione per attivare qualsiasi animazione che ha senso per le esigenze del tuo gioco.

Ad esempio, questa tecnica di animazione utilizza uno LocalScript invece di uno Script per fornire ai giocatori un feedback immediato quando collidono con il volume. Se il server dovesse ascoltare per la collisione e riprodurre l'animazione, ci potrebbe essere un ritardo tra il tocco del volume da parte del giocatore sul proprio client e vedere l'animazione riprodursi a causa del tempo di replica dal server al client.

Per creare uno script locale che rilevi quando il personaggio del giocatore locale tocca il volume:

  1. Nella finestra Explorer, aggiungi un nuovo script a StarterCharacterScripts. Questa posizione garantisce che lo script e i suoi figli siano clonati nel personaggio del giocatore all'entrata e quando respawnano nell'esperienza.

    1. Espandi StarterPlayer, quindi passa sopra il suo figlio StarterCharacterScripts e clicca sul pulsante ⊕.
    2. Dal menu contestuale, inserisci uno LocalScript e rinominalo TriggerAnimation.
  2. Nel nuovo script, incolla il seguente codice:


    local Workspace = game:GetService("Workspace")
    local animation = script:WaitForChild("Animation")
    local humanoid = script.Parent:WaitForChild("Humanoid")
    local animator = humanoid:WaitForChild("Animator")
    local animationTrack = animator:LoadAnimation(animation)
    local animationDetector = Workspace:WaitForChild("AnimationDetector")
    local debounce = false
    animationDetector.Touched:Connect(function(hit)
    if debounce then
    return
    end
    local hitCharacter = hit:FindFirstAncestorWhichIsA("Model")
    if hitCharacter ~= localCharacter then
    return
    end
    debounce = true
    animationTrack:Play()
    animationTrack.Ended:Wait()
    debounce = false
    end)

Lo script TriggerAnimation inizia ottenendo il servizio Workspace, che contiene tutti gli oggetti che esistono nel mondo 3D. Questo è importante perché lo script deve fare riferimento all'oggetto Part che funge da volume.

Per ogni personaggio del giocatore che si carica o respawna di nuovo nell'esperienza, lo script attende:

  • Il suo oggetto figlio Animation, che aggiungerai nella sezione successiva.
  • Gli oggetti Humanoid e Animator del personaggio.
  • L'oggetto del volume nello spazio di lavoro chiamato AnimationDetector.

Quando qualsiasi cosa collide con il volume, la funzione di gestione dell'evento Touched ottiene il primo antenato che è un Model, che dovrebbe essere il personaggio se il BasePart che è colliso con il volume è un discendente di un modello di personaggio. Se lo è, la funzione controlla quindi se il Model è il personaggio del giocatore locale. Se lo è, la funzione quindi:

  • Imposta il debounce a true.
  • Riproduce e attende la fine dell'animazione.
  • Ripristina il debounce a false.

Impostare il debounce da false a true e poi di nuovo a false dopo che l'animazione ha finito di riprodursi è uno schema di debounce che impedisce all'animazione di attivarsi ripetutamente mentre i giocatori continuano a collidere con il volume. Per ulteriori informazioni su questo schema di debounce, vedi Rilevare le collisioni.

Aggiungi animazione

Se dovessi testare la tua esperienza proprio ora, il tuo script TriggerAnimation non sarebbe ancora in grado di riprodurre un'animazione in risposta alla collisione tra il giocatore locale e il volume. Questo perché sta aspettando un oggetto figlio Animation con un ID di risorsa di animazione che può fare riferimento, e quell'oggetto Animation attualmente non esiste.

Per aggiungere un'animazione per lo script locale da fare riferimento mentre i giocatori collidono con il volume:

  1. Nella finestra Explorer, aggiungi una nuova animazione a TriggerAnimation.

    1. Passa sopra TriggerAnimation e clicca sul pulsante ⊕.
    2. Dal menu contestuale, inserisci un'Animazione.
  2. Seleziona il nuovo oggetto animazione, quindi nella finestra Properties, imposta AnimationID sull'ID della risorsa di animazione che vuoi attivare quando i giocatori toccano il volume. Ad esempio, il campione Hazardous Space Station fa riferimento a rbxassetid://3716468774 per riprodurre un'animazione di un personaggio che cade all'indietro.

  3. Testa la tua esperienza per assicurarti che l'animazione venga riprodotta quando i giocatori si trovano vicino alla prima perdita di vapore.

© 2026 Roblox Corporation. Roblox, il logo Roblox e Powering Imagination sono tra i nostri marchi registrati e non registrati negli Stati Uniti. e altri paesi.