Uma vez que você tenha criado uma animação, você precisa usar scripts para incluí-la em sua experiência. Você pode either jogar animações manualmente dos scripts ou substituir animações padrão para personagens do jogador.
Jogando Animações de Scripts
Em alguns casos, você precisará jogar uma animação diretamente do dentro de um script, como quando um usuário pressiona uma certa tecla ou coleta um item especial.
Humanóides
Para jogar uma animação em um modelo que contém um ObjetoHumanoid, como personagens jogáveis típicos, siga esse padrão básico:
- Crie uma nova instância Animation com o AnimationId adequado.
- Carregar a animação via Animator:LoadAnimation() para criar um AnimationTrack .
- Jogue a música com AnimationTrack:Play() .
Por exemplo, o seguinte LocalScript, quando colocado em StarterPlayerScripts, carrega uma animação de "expulsar" no personagem do jogador e aplica-a. O script também utiliza o método Class.AnimationTrack:GetMarkerReachedSignal()|GetMarkerReachedSignal() para detectar quando um evento de animação específico ocorre.
LocalScript - Jogue Animação Personalizada no Personagem do Jogador
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
-- Certifique-se de que o humanóide do personagem contém um Objeto"Animador"
local humanoid = character:WaitForChild("Humanoid")
local animator = humanoid:WaitForChild("Animator")
-- Criar uma nova instância "Animação" e atribuir um ID de ativo de animação
local kickAnimation = Instance.new("Animation")
kickAnimation.AnimationId = "rbxassetid://2515090838"
-- Carregar a animação no animador
local kickAnimationTrack = animator:LoadAnimation(kickAnimation)
-- Jogue a pista de animação
kickAnimationTrack:Play()
-- Se um evento nomeado for definido para a animações, conecte-o ao "GetMarkerReachedSignal()"
kickAnimationTrack:GetMarkerReachedSignal("KickEnd"):Connect(function(paramString)
print(paramString)
end)
Não-Humanóides
Para jogar animações em modelos que não contêm um Class.Humanoid, você deve criar um Humanoid com um filho AnimationController . Por exemplo, o seguinte 2> Class.Script2> (assumido ser um filho direto do rig / plataforma / equipamento) carrega uma animação de "expulsar" e aplica-a.
Script - Jogue Animação Personalizada no Personagem Rig
local rig = script.Parent
-- Criar uma nova instância "Animação" e atribuir um ID de ativo de animação
local kickAnimation = Instance.new("Animation")
kickAnimation.AnimationId = "rbxassetid://2515090838"
-- Criar um novo "AnimationController" e "Animator"
local animationController = Instance.new("AnimationController")
animationController.Parent = rig
local animator = Instance.new("Animator")
animator.Parent = animationController
-- Carregar a animação no animador
local kickAnimationTrack = animator:LoadAnimation(kickAnimation)
-- Jogue a pista de animação
kickAnimationTrack:Play()
-- Se um evento nomeado for definido para a animações, conecte-o ao "GetMarkerReachedSignal()"
kickAnimationTrack:GetMarkerReachedSignal("KickEnd"):Connect(function(paramString)
print(paramString)
end)
Substituindo Animações Padrão
Por padrão, os personagens de jogador do Roblox incluem animações comuns, como correr, escalar, nadar e pular. Você pode substituir essas animações padrão com animações do catálogo ou com suas próprias animações Customizadas.
Obtenha o ID do recurso da nova animação da seguinte forma:
- Para uma animação personalizada construída com o Editor de Animação, siga as instruções de exportação.
- Copie um ID adequado da referência de animação do catálogo abaixo. Por exemplo, para substituir a animação de execução padrão com a variante Ninja Run, use 656118852.
Na janela Explorer, adicione um novo Script à ServerScriptService .
- Passe o mouse sobre ServerScriptService e clique no botão ⊕.
- Do menu contextual, insira um Script .
No novo script, cole o seguinte código:
Script - Substituir Animações de Personagem Padrãolocal Players = game:GetService("Players")local function onCharacterAdded(character)-- Obter o animador no humanóidelocal humanoid = character:WaitForChild("Humanoid")local animator = humanoid:WaitForChild("Animator")-- Pare todas as faixas de animaçãofor _, playingTrack in animator:GetPlayingAnimationTracks() doplayingTrack:Stop(0)endlocal animateScript = character:WaitForChild("Animate")--animateScript.executar.RunAnim.AnimationId = "rbxassetid://"--animateScript.andar.WalkAnim.AnimationId = "rbxassetid://"--animateScript.pular.JumpAnim.AnimationId = "rbxassetid://"--animateScript.inativo.Animation1.AnimationId = "rbxassetid://"--animateScript.inativo.Animation2.AnimationId = "rbxassetid://"--animateScript.queda.FallAnim.AnimationId = "rbxassetid://"--animateScript.nadar.Swim.AnimationId = "rbxassetid://"--animateScript.swimidle.SwimIdle.AnimationId = "rbxassetid://"--animateScript.escalada.ClimbAnim.AnimationId = "rbxassetid://"endlocal function onPlayerAdded(player)player.CharacterAppearanceLoaded:Connect(onCharacterAdded)endPlayers.PlayerAdded:Connect(onPlayerAdded)Para cada linha que referencia uma animação de personagem padrão</animação de personagem padrão], não comente-a e cole o ID de substituição depois de rbxassetid://. Por exemplo, para alterar a animação de execução padrão para a variante rbxassetid://:
Script - Substituir Animações de Personagem Padrãolocal Players = game:GetService("Players")local function onCharacterAdded(character)-- Obter o animador no humanóidelocal humanoid = character:WaitForChild("Humanoid")local animator = humanoid:WaitForChild("Animator")-- Pare todas as faixas de animaçãofor _, playingTrack in animator:GetPlayingAnimationTracks() doplayingTrack:Stop(0)endlocal animateScript = character:WaitForChild("Animate")animateScript.run.RunAnim.AnimationId = "rbxassetid://656118852"--animateScript.andar.WalkAnim.AnimationId = "rbxassetid://"--animateScript.pular.JumpAnim.AnimationId = "rbxassetid://"--animateScript.inativo.Animation1.AnimationId = "rbxassetid://"--animateScript.inativo.Animation2.AnimationId = "rbxassetid://"--animateScript.queda.FallAnim.AnimationId = "rbxassetid://"--animateScript.nadar.Swim.AnimationId = "rbxassetid://"--animateScript.swimidle.SwimIdle.AnimationId = "rbxassetid://"--animateScript.escalada.ClimbAnim.AnimationId = "rbxassetid://"endlocal function onPlayerAdded(player)player.CharacterAppearanceLoaded:Connect(onCharacterAdded)endPlayers.PlayerAdded:Connect(onPlayerAdded)
Configurando Pesos de Animação
Você pode usar várias animações para a mesma ação. Por exemplo, há duas variações de idle no código de exemplo para substituir animações padrão .
Quando múltiplas animações existem para um estado de personagem, o script Animate escolhe aleatoriamente qual delas jogar, mas você pode influenciar o resultado definindo o valor de Weight da animação sob a seguinte fórmula:
- peso da animação / peso total de todas as animações de estado No seguinte exemplo, idle.Animation1 vai jogar ⅓ do tempo que o personagem está inativo, enquanto idle.Animation2 vai jogar ⅔ do tempo.
Script - Substituir Animações de Personagem Padrão
animateScript.idle.Animation1.AnimationId = "rbxassetid://656117400"animateScript.idle.Animation2.AnimationId = "rbxassetid://656118341"animateScript.idle.Animation1.Weight.Value = 5animateScript.idle.Animation2.Weight.Value = 10
Referências de Animação
Animações de Personagem Padrão
A tabela a seguir contém todas as animações de personagens padrão que você pode substituir com animações de catálogo ou suas próprias animações definidas. Observe que Idle tem duas variações que você pode 2>pesar2> para jogar mais ou menos frequentemente.
Ação de Personagem | Referência de Script de Animação |
Corra | animateScript.run.RunAnim.AnimationId |
Caminhar | animateScript.walk.WalkAnim.AnimationId |
Saltar | animateScript.jump.JumpAnim.AnimationId |
Inativo | animateScript.idle.Animation1.AnimationId``animateScript.idle.Animation2.AnimationId |
Cair | animateScript.fall.FallAnim.AnimationId |
Nadar | animateScript.swim.Swim.AnimationId |
Nadar (Inactivo) | animateScript.swimidle.SwimIdle.AnimationId |
Escalar | animateScript.climb.ClimbAnim.AnimationId |
Animações de Catálogo
Ao usar conjuntos de animação de avatar para substituir animações padrão, use as seguintes referências para os IDs de recursos respectivos. Por exemplo, se você quiser aplicar a animação Ninja Jump, use 656117878. Observe que 1>Idle1> possui várias variações.
Astronauta | Correr 891636393 Caminhar 891636393 |
Bubbly | Correr 910025107 Caminhar 91003487 |
Desenho Animado > | Correr 742638842> Caminhar 742638445 |
Velho > | Correr 845386501 Caminhar 845403856 |
Cavaleiro > | Correr 657564596 Caminhar 657552124 |
Levitação | Correr 616010382 Caminhar 616013216 |
Mago > | Correr 70786 |
Ninja > | Correr 656118852> Caminhar 656121766> |
Pirata | Correr 750783738 Caminhar 750785693 |
Robô > | Correr 616091570 Caminhar 616095330 |
Rthro > | Correr 2510198475 Caminhar 2510 |
Elegante > | Correr 616140816 Caminhar 616146177> |
Super-herói > | Correr 616117076 Caminhar 616122287 |
Brinquedo | Correr 782842708 Caminhar 782843345 |
Vampiro > | Correr 1083462077 Caminhar 1083 |
Lobisomem | Correr 1083216690 Caminhar 1083 |
Zumbi > | Correr 616163682 Caminhar 616168032 |