Una vez que hayas creado una animación, necesitas usar scripts para incluirlas en tu juego. Puedes reproducir animaciones manualmente desde scripts o reemplazar animaciones predeterminadas para los personajes de los jugadores.
Reproducir animaciones desde scripts
En algunos casos, necesitarás reproducir una animación directamente desde dentro de un script, como cuando un usuario presiona una determinada tecla o recoge un objeto especial.
Humanoides
Para reproducir una animación en un rig que contiene un objeto Humanoid, como los personajes jugables típicos, sigue este patrón básico:
- Crea una nueva instancia de Animation con el AnimationId apropiado.
- Carga la animación a través de Animator:LoadAnimation() para crear un AnimationTrack.
- Reproduce la pista con AnimationTrack:Play().
Por ejemplo, el siguiente LocalScript, cuando se coloca en StarterPlayerScripts, carga una animación de "patada" en el personaje del jugador y la reproduce. El script también utiliza el método GetMarkerReachedSignal() para detectar cuándo ocurre un evento de animación específico.
LocalScript - Reproducir Animación Personalizada en el Personaje del Jugador
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
-- Asegúrate de que el humanoide del personaje contenga un objeto "Animator"
local humanoid = character:WaitForChild("Humanoid")
local animator = humanoid:WaitForChild("Animator")
-- Crear una nueva instancia de "Animation" y asignar un ID de activo de animación
local kickAnimation = Instance.new("Animation")
kickAnimation.AnimationId = "rbxassetid://2515090838"
-- Cargar la animación en el animador
local kickAnimationTrack = animator:LoadAnimation(kickAnimation)
-- Si se definió un evento nombrado para la animación, conéctalo a "GetMarkerReachedSignal()"
kickAnimationTrack:GetMarkerReachedSignal("KickEnd"):Connect(function(paramString)
print(paramString)
end)
task.wait(4)
-- Reproducir la pista de animación
kickAnimationTrack:Play()
No-humanoides
Para reproducir animaciones en rigs que no contienen un Humanoid, debes crear un AnimationController con un Animator hijo. Por ejemplo, el siguiente Script (asumido como hijo directo del rig) carga una animación de "patada" y la reproduce.
Script - Reproducir Animación Personalizada en el Rig del Personaje
local rig = script.Parent
-- Crear una nueva instancia de "Animation" y asignar un ID de activo de animación
local kickAnimation = Instance.new("Animation")
kickAnimation.AnimationId = "rbxassetid://2515090838"
-- Crear un nuevo "AnimationController" y "Animator"
local animationController = Instance.new("AnimationController")
animationController.Parent = rig
local animator = Instance.new("Animator")
animator.Parent = animationController
-- Cargar la animación en el animador
local kickAnimationTrack = animator:LoadAnimation(kickAnimation)
-- Si se definió un evento nombrado para la animación, conéctalo a "GetMarkerReachedSignal()"
kickAnimationTrack:GetMarkerReachedSignal("KickEnd"):Connect(function(paramString)
print(paramString)
end)
task.wait(4)
-- Reproducir la pista de animación
kickAnimationTrack:Play()
Reemplazar animaciones predeterminadas
De forma predeterminada, los personajes de los jugadores de Roblox incluyen animaciones comunes como correr, escalar, nadar y saltar. Puedes reemplazar estas animaciones predeterminadas con animaciones del catálogo o con tus propias animaciones personalizadas.
Obtén el ID de activo de la nueva animación de la siguiente manera:
- Para una animación personalizada creada con el Animation Editor, sigue las instrucciones de exportación.
- Copia un ID apropiado del referencia de animación del catálogo a continuación. Por ejemplo, para reemplazar la animación de correr predeterminada con la variante Ninja Run, usa 656118852.
En el nuevo script, pega el siguiente código:
Script - Reemplazar Animaciones Predeterminadas del Personajelocal Players = game:GetService("Players")local function onCharacterAdded(character)-- Obtener animador en humanoidelocal humanoid = character:WaitForChild("Humanoid")local animator = humanoid:WaitForChild("Animator")-- Detener todas las pistas de animaciónfor _, 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)Para cada línea que haga referencia a una animación predeterminada del personaje, descoméntala y pega el ID de reemplazo después de rbxassetid://. Por ejemplo, para cambiar la animación de correr predeterminada a la variante Ninja Run:
Script - Reemplazar Animaciones Predeterminadas del Personajelocal Players = game:GetService("Players")local function onCharacterAdded(character)-- Obtener animador en humanoidelocal humanoid = character:WaitForChild("Humanoid")local animator = humanoid:WaitForChild("Animator")-- Detener todas las pistas de animaciónfor _, 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)
Establecer pesos de animación
Puedes usar múltiples animaciones para la misma acción. Por ejemplo, hay dos variaciones de idle en el ejemplo de código para reemplazar las animaciones predeterminadas.
Cuando existen múltiples animaciones para un estado de personaje, el script Animate elige aleatoriamente cuál reproducir, pero puedes influir en el resultado estableciendo el valor de Weight de la animación bajo la siguiente fórmula:
- peso de la animación / peso total de todas las animaciones de estado
En el siguiente ejemplo, idle.Animation1 se reproducirá ⅓ del tiempo que el personaje esté inactivo, mientras que idle.Animation2 se reproducirá ⅔ del tiempo.
Script - Reemplazar Animaciones Predeterminadas del PersonajeanimateScript.idle.Animation1.AnimationId = "rbxassetid://656117400"animateScript.idle.Animation2.AnimationId = "rbxassetid://656118341"animateScript.idle.Animation1.Weight.Value = 5animateScript.idle.Animation2.Weight.Value = 10
Referencias de animación
Animaciones predeterminadas del personaje
La siguiente tabla contiene todas las animaciones predeterminadas del personaje que puedes reemplazar con animaciones del catálogo o con tus propias animaciones personalizadas. Ten en cuenta que Idle tiene dos variaciones que puedes pesar para que se reproduzcan con más o menos frecuencia.
| Acción del personaje | Referencia del script Animate |
| Correr | animateScript.run.RunAnim.AnimationId |
| Caminar | animateScript.walk.WalkAnim.AnimationId |
| Saltar | animateScript.jump.JumpAnim.AnimationId |
| Inactivo | animateScript.idle.Animation1.AnimationId |
| Caer | animateScript.fall.FallAnim.AnimationId |
| Nadar | animateScript.swim.Swim.AnimationId |
| Nadar (Inactivo) | animateScript.swimidle.SwimIdle.AnimationId |
| Escalar | animateScript.climb.ClimbAnim.AnimationId |
Animaciones del catálogo
Al utilizar paquetes de animación de avatar para reemplazar animaciones predeterminadas, utiliza las siguientes referencias para los respectivos ID de activos. Por ejemplo, si deseas aplicar la animación Ninja Jump, usa 656117878. Ten en cuenta que Idle tiene múltiples variaciones.
| Astronauta | Correr 891636393 Caminar 891636393 Saltar 891627522 Inactivo 891621366, 891633237, 1047759695 Caer 891617961 Nadar 891639666 Nadar (Inactivo) 891663592 Escalar 891609353 |
| Burbujeante | Correr 910025107 Caminar 910034870 Saltar 910016857 Inactivo 910004836, 910009958, 1018536639 Caer 910001910 Nadar 910028158 Nadar (Inactivo) 910030921 Escalar 909997997 |
| Dibujos animados | Correr 742638842 Caminar 742640026 Saltar 742637942 Inactivo 742637544, 742638445, 885477856 Caer 742637151 Nadar 742639220 Nadar (Inactivo) 742639812 Escalar 742636889 |
| Anciano | Correr 845386501 Caminar 845403856 Saltar 845398858 Inactivo 845397899, 845400520, 901160519 Caer 845396048 Nadar 845401742 Nadar (Inactivo) 845403127 Escalar 845392038 |
| Caballero | Correr 657564596 Caminar 657552124 Saltar 658409194 Inactivo 657595757, 657568135, 885499184 Caer 657600338 Nadar 657560551 Nadar (Inactivo) 657557095 Escalar 658360781 |
| Levitación | Correr 616010382 Caminar 616013216 Saltar 616008936 Inactivo 616006778, 616008087, 886862142 Caer 616005863 Nadar 616011509 Nadar (Inactivo) 616012453 Escalar 616003713 |
| Mago | Correr 707861613 Caminar 707897309 Saltar 707853694 Inactivo 707742142, 707855907, 885508740 Caer 707829716 Nadar 707876443 Nadar (Inactivo) 707894699 Escalar 707826056 |
| Ninja | Correr 656118852 Caminar 656121766 Saltar 656117878 Inactivo 656117400, 656118341, 886742569 Caer 656115606 Nadar 656119721 Nadar (Inactivo) 656121397 Escalar 656114359 |
| Pirata | Correr 750783738 Caminar 750785693 Saltar 750782230 Inactivo 750781874, 750782770, 885515365 Caer 750780242 Nadar 750784579 Nadar (Inactivo) 750785176 Escalar 750779899 |
| Robot | Correr 616091570 Caminar 616095330 Saltar 616090535 Inactivo 616088211, 616089559, 885531463 Caer 616087089 Nadar 616092998 Nadar (Inactivo) 616094091 Escalar 616086039 |
| Rthro | Correr 2510198475 Caminar 2510202577 Saltar 2510197830 Inactivo 2510197257, 2510196951, 3711062489 Caer 2510195892 Nadar 2510199791 Nadar (Inactivo) 2510201162 Escalar 2510192778 |
| Estiloso | Correr 616140816 Caminar 616146177 Saltar 616139451 Inactivo 616136790, 616138447, 886888594 Caer 616134815 Nadar 616143378 Nadar (Inactivo) 616144772 Escalar 616133594 |
| Superhéroe | Correr 616117076 Caminar 616122287 Saltar 616115533 Inactivo 616111295, 616113536, 885535855 Caer 616108001 Nadar 616119360 Nadar (Inactivo) 616120861 Escalar 616104706 |
| Juguete | Correr 782842708 Caminar 782843345 Saltar 782847020 Inactivo 782841498, 782845736, 980952228 Caer 782846423 Nadar 782844582 Nadar (Inactivo) 782845186 Escalar 782843869 |
| Vampiro | Correr 1083462077 Caminar 1083473930 Saltar 1083455352 Inactivo 1083445855, 1083450166, 1088037547 Caer 1083443587 Nadar 1083464683 Nadar (Inactivo) 1083467779 Escalar 1083439238 |
| Hombre Lobo | Correr 1083216690 Caminar 1083178339 Saltar 1083218792 Inactivo 1083195517, 1083214717, 1099492820 Caer 1083189019 Nadar 1083222527 Nadar (Inactivo) 1083225406 Escalar 1083182000 |
| Zombi | Correr 616163682 Caminar 616168032 Saltar 616161997 Inactivo 616158929, 616160636, 885545458 Caer 616157476 Nadar 616165109 Nadar (Inactivo) 616166655 Escalar 616156119 |