Animator
*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.
La classe principale responsabile del riproduzione e della replicazione di Animations .Tutta la replicazione del gioco AnimationTracks viene gestita attraverso l'esempioAnimator.
Vedi anche Editor di animazioni e Utilizzo delle animazioni per imparare a creare e aggiungere animazioni pre-costruite o personalizzate al tuo Gioco.
Sommario
Proprietà
Metodi
Calcola le velocità relative tra le parti e applicarle a Motor6D.Part1 .Queste calcolazioni e assegnazioni di velocità relative avvengono nell'ordine fornito.
Restituisce l'elenco dei giocatori attualmente in riproduzione AnimationTracks .
Carica un Animation su un Animator , restituendo un AnimationTrack .
Aumenta il AnimationTrack.TimePosition di tutto il gioco AnimationTracks che viene caricato sul Animator , applicando gli offset al modello associato con il Animator .Per l'uso nella barra dei comandi o solo da plugin.
Eventi
Si accende quando l'Animatore inizia a riprodurre una AnimationTrack.
Proprietà
Metodi
ApplyJointVelocities
Dato l'attuale set di AnimationTracks di gioco e le loro attuali tempistiche e velocità di gioco, calcola le velocità relative tra le parti e applicale a Motor6D.Part1 (la parte che Animator considera la parte "figlia").Queste calcolazioni e assegnazioni di velocità relative avvengono nell'ordine fornito.
Questo metodo non applica le velocità per una giunta data se entrambe le parti della Articolazionesono attualmente parte della stessa assemblaggio, ad esempio, se sono ancora connesse direttamente o indirettamente da Motori o Saldature.
Questo metodo non disabilita o rimuove le giunzioni per te.Devi disabilitare o altrimenti rimuovere i giunti rigidi dall'assemblaggio prima di chiamare questo metodo.
I dati forniti Motor6Ds non sono richiesti di essere discendenti del DataModel .La rimozione delle giunzioni dalla DataModel prima di chiamare questo metodo è supportata.
Parametri
Restituzioni
GetPlayingAnimationTracks
Restituisce l'elenco dei giocatori attualmente in riproduzione AnimationTracks .
Restituzioni
LoadAnimation
Questa funzione carica il dato Animation su questo Animator, restituendo un giocabile AnimationTrack .Quando viene chiamata in un Animator all'interno di modelli per cui il client ha proprietà di rete, ad esempio il personaggio del Giocatorelocale o da BasePart:SetNetworkOwner() , questa funzione carica anche l'animazione per il server.
Nota che il Animator deve essere nel Workspace prima di effettuare una chiamata a LoadAnimation() o altrimenti non sarà in grado di recuperare il servizio AnimationClipProvider e lanciare un'errore.
Dovresti usare questa funzione direttamente invece delle funzioni con nome simile Humanoid:LoadAnimation() e AnimationController:LoadAnimation() .Si tratta di proxy deprecati di questa funzione che creano anche un Animator se non esiste; ciò può causare problemi di replicazione se non sei attento.
Caricamento di un'animazione sul client o sul server
Perché AnimationTracks si replica correttamente, è importante sapere quando dovrebbero essere caricati sul client o sul Server:
Se un Animator è un discendente di un Humanoid o AnimationController in un Giocatore's Player.Character , le animazioni iniziate sul client del Giocatoreverranno replicate sul server e su altri client.
Se il non è un discendente di un personaggio giocatore, le sue animazioni devono essere caricate e avviate sul server per replicare.
L'oggetto Animator deve essere creato inizialmente sul server e replicato ai client per la replicazione dell'animazione per funzionare.Se un Animator viene creato localmente, quindi AnimationTracks viene caricato con quel Animator non si replicherà.
Parametri
Restituzioni
StepAnimations
Aumenta il AnimationTrack.TimePosition di tutto il gioco AnimationTracks che viene caricato sul Animator , applicando gli offset al modello associato con il Animator .Per l'uso nella barra dei comandi o solo da plugin.
Il parametro deltaTime determina il numero di secondi da aumentare sul progresso dell'animazioni.Tipicamente questa funzione verrà chiamata in un ciclo per visualizzare la lunghezza di un'animazione (vedi esempio).
Nota che una volta che le animazioni hanno smesso di giocare, le articolazioni del modello dovranno essere ripristinate manualmente nelle loro posizioni originali (vedi esempio).
Questa funzione viene utilizzata per simulare il riproduzione di Animations quando il gioco non è in esecuzione.Questo consente di visualizzare le animazioni senza le conseguenze dell'esecuzione del Gioco, come gli script in esecuzione.Se la funzione viene chiamata mentre il gioco è in esecuzione, o da Scripts o LocalScripts, restituirà un errore.
Gli sviluppatori che progettano i propri editor di animazione personalizzati sono consigliati di utilizzare questa funzione per visualizzare le animazioni, poiché è il metodo che utilizza il plugin Roblox Animation Editor ufficiale.
Parametri
La quantità di tempo in secondi di riproduzione dell'animazione deve essere incrementata.
Restituzioni
Campioni di codice
This code sample includes a function that can be used to preview an Animation on a Model in Roblox Studio, without needing to run the game. It utilizes the Animator.StepAnimations function, which is the same method the official Roblox Animation Editor uses.
local RunService = game:GetService("RunService")
local function studioPreviewAnimation(model, animation)
-- find the AnimationController and Animator
local animationController = model:FindFirstChildOfClass("Humanoid")
or model:FindFirstChildOfClass("AnimationController")
local animator = animationController and animationController:FindFirstChildOfClass("Animator")
if not animationController or not animator then
return
end
-- load the Animation to create an AnimationTrack
local track = animationController:LoadAnimation(animation)
track:Play()
-- preview the animation
local startTime = tick()
while (tick() - startTime) < track.Length do
local step = RunService.Heartbeat:wait()
animator:StepAnimations(step)
end
-- stop the animation
track:Stop(0)
animator:StepAnimations(0)
-- reset the joints
for _, descendant in pairs(model:GetDescendants()) do
if descendant:IsA("Motor6D") then
local joint = descendant
joint.CurrentAngle = 0
joint.Transform = CFrame.new()
end
end
end
local character = script.Parent
local animation = Instance.new("Animation")
animation.AnimationId = "rbxassetid://507765644"
studioPreviewAnimation(character, animation)
Eventi
AnimationPlayed
Fuochi per tutte le chiamate AnimationTrack:Play() di AnimazioneTraccie create e di proprietà dell'Animatore.