Reproducir animaciones de personajes

*Este contenido se traduce usando la IA (Beta) y puede contener errores. Para ver esta página en inglés, haz clic en aquí.

Reproducir animaciones de personajes es una parte importante de lo que hace que los avatares y los personajes no jugables (NPCs) sean expresivos, realistas y atractivos para tu audiencia. Además de proporcionar visuales inmersivos, las animaciones de personajes brindan a los jugadores retroalimentación sobre sus acciones, orientación sobre cómo navegar por el entorno y información vital sobre su personaje y otros.

Usando el archivo .rbxl de la Estación Espacial Peligrosa como referencia, este tutorial te muestra cómo reproducir animaciones de personajes utilizando dos técnicas diferentes, incluyendo orientación sobre:

  • Intercambiar los ID de activos de animación predeterminados del personaje por tus propias animaciones personalizadas.
  • Activar animaciones en respuesta a las acciones del personaje dentro del espacio 3D.

Después de completar este tutorial, tendrás las habilidades para personalizar animaciones para una amplia variedad de situaciones de juego.

Cambiar animaciones predeterminadas

Cada personaje con un objeto Humanoid predeterminado, ya sea un avatar controlado por un jugador o un personaje no jugador (NPC), incluye un conjunto de animaciones predeterminadas que se reproducen cada vez que el personaje realiza acciones específicas en el juego, como correr, escalar y saltar. Roblox proporciona estas animaciones listas para usar para cada juego sin ningún esfuerzo adicional de scripting.

Animación de Caída Predeterminada
Animación de Nado Predeterminada
Animación de Escalada Predeterminada

Sin embargo, si estas animaciones predeterminadas no cumplen con los requisitos de diseño para el entorno, la estética o la narrativa general de tu mundo, puedes intercambiarlas por animaciones personalizadas que se apliquen a cada jugador que se una a tu juego.

Para demostrar, la siguiente sección te enseña cómo intercambiar la animación de caminar predeterminada por un ciclo de animación de caminar personalizado de Crear Animaciones de Personajes. Usando este mismo proceso, puedes intercambiar cualquiera de las animaciones predeterminadas por tus propios ID de activos de animación.

Animación de Caminar Predeterminada
Animación de Caminar Personalizada

Crear script

Cada objeto Humanoid de un personaje incluye un objeto hijo Animator que almacena todas las animaciones predeterminadas del personaje. Para establecer cualquiera de estas animaciones predeterminadas en nuevos ID de activos, debes crear un script en el ServerScriptService para que pueda hacer referencia y sobrescribir los valores predeterminados del objeto Animator tan pronto como los jugadores carguen en el juego.

Para crear un script que haga referencia a los ID de activos de animación predeterminados:

  1. En la ventana de Explorer, agrega un nuevo script a ServerScriptService.

    1. Pasa el cursor sobre ServerScriptService y haz clic en el botón ⊕.
    2. En el menú contextual, inserta un Script.
  2. En el nuevo script, pega el siguiente código:

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

El script ResetDefaultAnimations comienza obteniendo el servicio Players, que contiene todos los objetos Player para los jugadores a medida que se conectan a un servidor. Cuando cada uno de los personajes de los jugadores se carga en el juego, la función onCharacterAdded espera hasta que detecta los objetos Humanoid y Animator del personaje.

Cuando detecta un objeto Animator por primera vez, el script imprime "¡Animator encontrado!" para informarte que el script está funcionando como se esperaba.

Reemplazar ID de activo

Ahora que sabes que tu script puede detectar cuándo los jugadores cargan y se conectan al servidor, puedes modificar tu script para hacer referencia específicamente a los ID de animación que deseas intercambiar por tus propias animaciones personalizadas.

La siguiente tabla contiene todas las animaciones predeterminadas del personaje que puedes llamar y reemplazar dentro del objeto Animator. Ten en cuenta que Idle tiene dos variaciones que puedes programar para que se reproduzcan con más o menos frecuencia.

Acción del PersonajeReferencia del Script de Animación
CorreranimateScript.run.RunAnim.AnimationId
CaminaranimateScript.walk.WalkAnim.AnimationId
SaltaranimateScript.jump.JumpAnim.AnimationId
Inactivo

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

CaeranimateScript.fall.FallAnim.AnimationId
Nadar

animateScript.swim.Swim.AnimationId

Nadar (Inactivo)

animateScript.swimidle.SwimIdle.AnimationId

EscalaranimateScript.climb.ClimbAnim.AnimationId

Para reemplazar el ID de activo de la animación de caminar predeterminada:

  1. Llama a la referencia del script de animación de caminar predeterminada, luego reemplaza el ID de activo con tu propio ID de activo de animación personalizada. Por ejemplo, el siguiente fragmento de código hace referencia a la animación de ciclo de caminar de Crear Animaciones de Personajes.

    local Players = game:GetService("Players")
    local function onCharacterAdded(character)
    local humanoid = character:WaitForChild("Humanoid")
    local animator = humanoid:WaitForChild("Animator")
    print("¡Animator encontrado!")
    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. Prueba tu juego para asegurarte de que tu animación de caminar personalizada sobrescriba la animación predeterminada.

    1. Elige Test en el menú desplegable y haz clic en el botón Play a su derecha para comenzar la prueba de juego.

      Opción de prueba en el menú desplegable de modos de prueba del mezzanine de Studio.
    2. Camina por la estación espacial con tu avatar.

Activar animaciones

Mientras que la técnica anterior se centra en intercambiar animaciones predeterminadas que se reproducen automáticamente cada vez que un personaje realiza acciones específicas en el juego, puedes activar programáticamente animaciones para que se reproduzcan en respuesta a cualquier acción del personaje dentro del espacio 3D, como recoger un objeto o recibir daño de un peligro.

En este ejemplo, cuando los jugadores tocan la plataforma dorada, activan una animación de baile de personaje no predeterminada.

Este método de reproducción de animaciones es útil porque proporciona a los jugadores retroalimentación instantánea sobre cómo deben interactuar con los objetos en su entorno. Para demostrar, la siguiente sección te muestra cómo activar una animación cada vez que los personajes están demasiado cerca de fugas de vapor peligrosas como una forma de enseñar sutilmente a los jugadores a evitar caminar demasiado cerca de las paredes.

Insertar volumen

Una de las formas más comunes de activar un comportamiento de juego único es usar volúmenes, o regiones invisibles dentro del espacio 3D, para detectar cuándo los personajes u objetos interactúan con áreas específicas del entorno. Cuando emparejas volúmenes con scripts, puedes usar su retroalimentación de colisión para activar programáticamente acciones, como reducir la salud del jugador o reproducir una animación.

Una vista lejana de una habitación de mansión. Un contorno de una caja está en el medio de la habitación para significar el volumen que activa eventos de juego.
El Misterio de Duvall Drive utiliza volúmenes para activar eventos de juego que cambian la apariencia visual de la habitación.

Al agregar un volumen a tu juego, es importante escalarlo para que solo cubra el espacio que deseas activar para tu animación. Si haces tu volumen demasiado pequeño, los jugadores pueden nunca chocar con el área para reproducir la animación; por el contrario, si haces tu volumen demasiado grande, la animación se reproducirá antes de que los jugadores lleguen al objeto o área de interés, y pueden no entender qué hicieron para activar la animación.

Para insertar un volumen alrededor de una fuga de vapor que activará una animación:

  1. En la ventana de Explorer, agrega una nueva parte de bloque.
  2. Posiciona y redimensiona el bloque hasta que cubra el área que deseas activar para tu animación.
  3. En la ventana de Properties,
    1. Establece Name en AnimationDetector.

    2. Establece Transparency en 1 para hacer que el bloque sea invisible.

      Un contorno de un bloque es visible alrededor de una salida de vapor para significar la posición del volumen.

Crear script

Ahora que tienes una región definida para activar tu animación, es hora de crear un script que detecte programáticamente cada vez que los jugadores colisionen con el volumen. Luego puedes escuchar los eventos de colisión para activar cualquier animación que tenga sentido para tus requisitos de juego.

Por ejemplo, esta técnica de animación utiliza un LocalScript en lugar de un Script para proporcionar a los jugadores retroalimentación inmediata cuando colisionan con el volumen. Si el servidor escuchara la colisión y reprodujera la animación, podría haber un retraso entre el jugador tocando el volumen en su cliente y viendo la animación reproducirse debido al tiempo de replicación del servidor al cliente.

Para crear un script local que detecte cuándo el personaje del jugador local toca el volumen:

  1. En la ventana de Explorer, agrega un nuevo script a StarterCharacterScripts. Esta ubicación asegura que el script y sus hijos se clonen en el personaje del jugador al unirse y cuando respawnen de nuevo en el juego.

    1. Expande StarterPlayer, luego pasa el cursor sobre su hijo StarterCharacterScripts y haz clic en el botón ⊕.
    2. En el menú contextual, inserta un LocalScript y renómbralo a TriggerAnimation.
  2. En el nuevo script, pega el siguiente código:

    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)

El script TriggerAnimation comienza obteniendo el servicio Workspace, que contiene todos los objetos que existen en el mundo 3D. Esto es importante porque el script necesita hacer referencia al objeto Part que actúa como tu volumen.

Para cada personaje jugador que se carga o respawnea de nuevo en el juego, el script espera por:

  • Su objeto hijo Animation, que agregarás en la siguiente sección.
  • Los objetos Humanoid y Animator del personaje.
  • El objeto de volumen en el espacio de trabajo llamado AnimationDetector.

Cuando algo colisiona con el volumen, la función del manejador de eventos Touched obtiene el primer ancestro que es un Model, que debería ser el personaje si el BasePart que colisionó con el volumen es un descendiente de un modelo de personaje. Si lo es, la función luego verifica si el Model es el personaje del jugador local. Si lo es, la función luego:

  • Establece debounce en true.
  • Reproduce y espera a que la animación termine.
  • Establece debounce de nuevo en false.

Establecer debounce de false a true y de nuevo a false después de que la animación termine de reproducirse es un patrón de debounce que previene que la animación se active repetidamente a medida que los jugadores colisionan continuamente con el volumen. Para más información sobre este patrón de debounce, consulta Detectar colisiones.

Agregar animación

Si probaras tu juego en este momento, tu script TriggerAnimation aún no podría reproducir una animación en respuesta a la colisión del jugador local con el volumen. Esto se debe a que está esperando un objeto hijo Animation con un ID de activo de animación que pueda hacer referencia, y ese objeto Animation actualmente no existe.

Para agregar una animación para que el script local haga referencia a medida que los jugadores colisionan con el volumen:

  1. En la ventana de Explorer, agrega una nueva animación a TriggerAnimation.

    1. Pasa el cursor sobre TriggerAnimation y haz clic en el botón ⊕.
    2. En el menú contextual, inserta una Animation.
  2. Selecciona el nuevo objeto de animación, luego en la ventana de Properties, establece AnimationID en el ID de activo de animación que deseas activar cuando los jugadores toquen el volumen. Por ejemplo, la muestra de la Estación Espacial Peligrosa hace referencia a rbxassetid://3716468774 para reproducir una animación de un personaje cayendo hacia atrás.

  3. Prueba tu juego para asegurarte de que tu animación se reproduzca cuando los jugadores estén cerca de la primera fuga de vapor.

©2026 Roblox Corporation. Roblox, el logotipo de Roblox y "Powering Imagination" son algunas de nuestras marcas registradas y no registradas en los Estados Unidos y otros países.