Reproduzir animações de personagem

*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.

Reproduzir animações de personagem é uma parte importante do que torna avatares e personagens não jogáveis (NPCs) expressivos, realistas e envolventes para seu público. Além de fornecer visuais imersivos, as animações de personagem oferecem feedback aos jogadores sobre suas ações, orientação sobre como navegar pelo ambiente e informações vitais sobre seu personagem e outros.

Usando o arquivo Hazardous Space Station .rbxl como referência, este tutorial mostra como reproduzir animações de personagem usando duas técnicas diferentes, incluindo orientações sobre:

  • Trocar os IDs de ativos de animação padrão do personagem por suas próprias animações personalizadas.
  • Acionar animações em resposta a ações do personagem dentro do espaço 3D.

Após concluir este tutorial, você terá as habilidades para personalizar animações para uma ampla variedade de situações de jogo.

Alterar animações padrão

Todo personagem com um objeto padrão Humanoid, seja um avatar controlado pelo jogador ou um personagem não jogável (NPC), inclui um conjunto de animações padrão que são reproduzidas sempre que o personagem realiza ações específicas no jogo, como correr, escalar e pular. O Roblox fornece essas animações prontas para uso em todos os jogos, sem necessidade de esforço adicional de script.

Animação de Queda Padrão
Animação de Natação Padrão
Animação de Escalada Padrão

No entanto, se essas animações padrão não atenderem aos requisitos de design para o ambiente, estética ou narrativa geral do seu mundo, você pode trocá-las por animações personalizadas que se aplicam a todos os jogadores que entram no seu jogo.

Para demonstrar, a seção a seguir ensina como trocar a animação de caminhada padrão por uma animação de ciclo de caminhada personalizada do Create Character Animations. Usando esse mesmo processo, você pode trocar qualquer uma das animações padrão pelos seus próprios IDs de ativos de animação.

Animação de Caminhada Padrão
Animação de Caminhada Personalizada

Criar script

O objeto Humanoid de cada personagem inclui um objeto filho Animator que armazena todas as animações padrão do personagem. Para definir qualquer uma dessas animações padrão para novos IDs de ativos, você deve criar um script no ServerScriptService para que ele possa referenciar e substituir os valores padrão do objeto Animator assim que os jogadores entrarem no jogo.

Para criar um script que referencie os IDs de ativos de animação padrão:

  1. Na janela Explorer, adicione um novo script ao ServerScriptService.

    1. Passe o mouse sobre ServerScriptService e clique no botão ⊕.
    2. No menu contextual, insira um Script.
  2. No novo script, cole o seguinte 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)

O script ResetDefaultAnimations começa obtendo o serviço Players, que contém todos os objetos Player para jogadores à medida que se conectam a um servidor. Quando cada um dos personagens dos jogadores carrega no jogo, a função onCharacterAdded espera até detectar os objetos Humanoid e Animator do personagem.

Quando detecta um objeto Animator pela primeira vez, o script imprime "Animator encontrado!" para avisá-lo de que o script está funcionando conforme o esperado.

Substituir ID de ativo

Agora que você sabe que seu script é capaz de detectar quando os jogadores entram e se conectam ao servidor, você pode modificar seu script para referenciar especificamente o(s) ID(s) de animação que deseja trocar por suas próprias animações personalizadas.

A tabela a seguir contém todas as animações padrão do personagem que você pode chamar e substituir dentro do objeto Animator. Observe que Idle tem duas variações que você pode programar para tocar com mais ou menos frequência.

Ação do PersonagemReferência do Script Animate
CorreranimateScript.run.RunAnim.AnimationId
CaminharanimateScript.walk.WalkAnim.AnimationId
PularanimateScript.jump.JumpAnim.AnimationId
Idle

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

QuedaanimateScript.fall.FallAnim.AnimationId
Nadar

animateScript.swim.Swim.AnimationId

Nadar (Idle)

animateScript.swimidle.SwimIdle.AnimationId

EscalaranimateScript.climb.ClimbAnim.AnimationId

Para substituir o ID de ativo da animação de caminhada padrão:

  1. Chame a referência do script de animação de caminhada padrão e, em seguida, substitua o ID de ativo pelo seu próprio ID de ativo de animação personalizada. Por exemplo, o seguinte exemplo de código referencia a animação de ciclo de caminhada do Create Character Animations.

    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. Teste seu jogo para garantir que sua animação de caminhada personalizada substitua a animação padrão.

    1. Escolha Testar no menu suspenso e clique no botão Reproduzir à sua direita para iniciar o teste.

      Opção Testar no menu suspenso dos modos de teste do mezzanine do Studio.
    2. Ande pela estação espacial com seu avatar.

Acionar animações

Enquanto a técnica anterior se concentra em trocar animações padrão que são reproduzidas automaticamente sempre que um personagem realiza ações específicas no jogo, você pode acionar programaticamente animações para serem reproduzidas em resposta a qualquer ação do personagem dentro do espaço 3D, como pegar um item ou sofrer dano de um perigo.

Neste exemplo, quando os jogadores tocam a plataforma dourada, eles acionam uma animação de dança de personagem não padrão.

Esse método de reprodução de animações é útil porque fornece feedback instantâneo aos jogadores sobre como eles devem interagir com objetos em seu ambiente. Para demonstrar, a seção a seguir mostra como acionar uma animação sempre que os personagens estão muito próximos de vazamentos de vapor perigosos, como uma forma sutil de ensinar os jogadores a evitar andar muito perto das paredes.

Inserir volume

Uma das maneiras mais comuns de acionar um comportamento de jogo exclusivo é usar volumes, ou regiões invisíveis dentro do espaço 3D, para detectar quando personagens ou objetos interagem com áreas específicas do ambiente. Quando você combina volumes com scripts, pode usar o feedback de colisão deles para acionar programaticamente ações, como reduzir a saúde do jogador ou reproduzir uma animação.

Uma visão distante de uma sala de mansão. Um contorno de uma caixa está no meio da sala para significar o volume que aciona eventos de jogo.
The Mystery of Duvall Drive usa volumes para acionar eventos de jogo que mudam a aparência visual da sala.

Ao adicionar um volume ao seu jogo, é importante escalá-lo para que ele cubra apenas o espaço que você deseja acionar sua animação. Se você fizer seu volume muito pequeno, os jogadores podem nunca colidir com a área para reproduzir a animação; por outro lado, se você fizer seu volume muito grande, a animação será reproduzida antes que os jogadores cheguem ao item ou área de interesse, e eles podem não entender o que fizeram para acionar a animação.

Para inserir um volume ao redor de um vazamento de vapor que acionará uma animação:

  1. Na janela Explorer, adicione uma nova parte de bloco.
  2. Posicione e redimensione o bloco até que ele cubra a área que você deseja acionar sua animação.
  3. Na janela Properties,
    1. Defina Name como AnimationDetector.

    2. Defina Transparency como 1 para tornar o bloco invisível.

      Um contorno de um bloco é visível ao redor de um ventilador de vapor para significar a posição do volume.

Criar script

Agora que você tem uma região definida para acionar sua animação, é hora de criar um script que detecte programaticamente sempre que os jogadores colidirem com o volume. Você pode então ouvir eventos de colisão para acionar qualquer animação que faça sentido para os requisitos do seu jogo.

Por exemplo, essa técnica de animação usa um LocalScript em vez de um Script para fornecer feedback imediato aos jogadores quando eles colidem com o volume. Se o servidor fosse ouvir a colisão e reproduzir a animação, poderia haver um atraso entre o jogador tocando o volume em seu cliente e vendo a animação ser reproduzida devido ao tempo de replicação do servidor para o cliente.

Para criar um script local que detectará quando o personagem do jogador local tocar o volume:

  1. Na janela Explorer, adicione um novo script ao StarterCharacterScripts. Essa colocação garante que o script e seus filhos sejam clonados no personagem do jogador ao entrar e quando eles renascerem no jogo.

    1. Expanda StarterPlayer, depois passe o mouse sobre seu filho StarterCharacterScripts e clique no botão ⊕.
    2. No menu contextual, insira um LocalScript e renomeie-o como TriggerAnimation.
  2. No novo script, cole o seguinte 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)

O script TriggerAnimation começa obtendo o serviço Workspace, que contém todos os objetos que existem no mundo 3D. Isso é importante porque o script precisa referenciar o objeto Part que atua como seu volume.

Para cada personagem jogador que carrega ou renasce no jogo, o script espera por:

  • Seu objeto filho Animation, que você adicionará na próxima seção.
  • Os objetos Humanoid e Animator do personagem.
  • O objeto de volume no espaço de trabalho chamado AnimationDetector.

Quando qualquer coisa colide com o volume, a função manipuladora de eventos Touched obtém o primeiro ancestral que é um Model, que deve ser o personagem se o BasePart que colidiu com o volume for um descendente de um modelo de personagem. Se for, a função verifica se o Model é o personagem do jogador local. Se for, a função então:

  • Define debounce como true.
  • Reproduz e espera a animação terminar.
  • Define debounce de volta para false.

Definir debounce de false para true e depois de volta para false após a animação terminar é um padrão de debounce que impede que a animação seja acionada repetidamente à medida que os jogadores colidem continuamente com o volume. Para mais informações sobre esse padrão de debounce, veja Detectar colisões.

Adicionar animação

Se você testasse seu jogo agora, seu script TriggerAnimation ainda não conseguiria reproduzir uma animação em resposta à colisão do jogador local com o volume. Isso ocorre porque ele está esperando por um objeto filho Animation com um ID de ativo de animação que pode referenciar, e esse objeto Animation atualmente não existe.

Para adicionar uma animação para o script local referenciar à medida que os jogadores colidem com o volume:

  1. Na janela Explorer, adicione uma nova animação ao TriggerAnimation.

    1. Passe o mouse sobre TriggerAnimation e clique no botão ⊕.
    2. No menu contextual, insira uma Animation.
  2. Selecione o novo objeto de animação e, em seguida, na janela Properties, defina AnimationID como o ID de ativo de animação que você deseja acionar quando os jogadores tocarem o volume. Por exemplo, o exemplo da Hazardous Space Station referencia rbxassetid://3716468774 para reproduzir uma animação de um personagem caindo para trás.

  3. Teste seu jogo para garantir que sua animação seja reproduzida quando os jogadores estiverem perto do primeiro vazamento de vapor.

©2026 Roblox Corporation, Roblox, o logotipo Roblox e Powering Imagination estão entre nossas marcas registradas e não registradas nos EUA e em outros países.