Uma expressão é uma fórmula curta semelhante ao Luau que lê parâmetros do gráfico e retorna um valor, como math.clamp((MovementSpeed + 0.5) / MaxSpeed, 0, 1). Use expressões para controlar uma propriedade de nó ou uma transição de máquina de estados. As expressões mantêm as transformações de parâmetros e decisões de animação em seu gráfico, próximas aos nós que elas controlam.
Pré-requisitos
Antes de criar uma expressão, familiarize-se com o Editor de Gráficos de Animação, incluindo como abri-lo e criar um gráfico de animação.
Criar uma expressão
Este exemplo usa uma expressão para controlar a propriedade Position de um Blend1DNode. Configure o nó com uma animação de inatividade na posição 0 e uma animação de corrida na posição 1. A expressão converte a velocidade de movimento do personagem na faixa de 0 a 1 que o nó usa para mesclar entre essas animações.
Adicione os parâmetros de gráfico do tipo Número MovementSpeed e MaxSpeed.

Arraste uma conexão do pino da propriedade Position do Blend1DNode e selecione Nova Expressão.

Insira a seguinte expressão:
math.clamp(MovementSpeed / MaxSpeed, 0, 1)
Clique fora da caixa de expressão para atualizá-la. À medida que MovementSpeed aumenta em direção a MaxSpeed, o Blend1DNode recebe um valor de 0 a 1 e mescla da animação de inatividade para a animação de corrida.
Depois de carregar o gráfico em um AnimationTrack, atualize MovementSpeed e MaxSpeed a partir do seu script de jogo com AnimationTrack:SetParameter(). O exemplo a seguir usa as propriedades MoveDirection e WalkSpeed de um Humanoid:
game:GetService("RunService").Stepped:Connect(function()
animationTrack:SetParameter("MovementSpeed", humanoid.MoveDirection.Magnitude * humanoid.WalkSpeed)
animationTrack:SetParameter("MaxSpeed", humanoid.WalkSpeed)
end)A expressão é avaliada à medida que os valores dos parâmetros mudam. Para o fluxo de trabalho de parâmetros, consulte Integração de API.
O que é suportado
O suporte a expressões inclui operações aritméticas e de comparação, expressões lógicas e condicionais, chamadas a funções na biblioteca math, construção e acesso a membros para valores CFrame, Vector2, Vector3 e Color3, e concatenação de strings. As seções a seguir listam a sintaxe e as funções suportadas.
Aritmética e comparações
Use operações aritméticas e de comparação padrão, com a ordem usual de operações. Por exemplo, // divide e arredonda para baixo.
Speed * 2.0 + Offset
(Health / MaxHealth) * 100
DamageMultiplier ^ 2
Count % 3
10 // 3
Speed < 1
Health >= MaxHealthOs operadores de comparação funcionam com números. Use == e ~= para comparar números, booleanos ou strings.
Lógica e curto-circuito
and, or e not seguem a veracidade do Luau e a avaliação de curto-circuito. Apenas false e nil são considerados falsos.
IsGrounded and GroundSpeed or AirSpeed
not IsDisabledExpressões if-then-else
Use a forma de expressão condicional do Luau para ramificar dentro de uma única expressão:
if Speed > 10 then "sprint" elseif Speed > 2 then "run" else "idle"Biblioteca Math
Use a biblioteca math. As expressões de gráfico ainda não suportam math.frexp(), math.noise() ou math.randomseed(). math.modf() atualmente retorna apenas a parte inteira.
math.clamp(Speed / MaxSpeed, 0, 1)
math.sin(Time * 2 * math.pi)
math.atan2(Direction.Y, Direction.X)
math.max(A, B, C)Construção de Vetores e Acesso a Membros
Construa valores Vector2 e Vector3, realize aritmética vetorial e acesse membros vetoriais como Magnitude e Unit.
Vector3.new(math.cos(Time), math.sin(Time), 0)
Vector2.new(InputX, InputY)
MoveDirection.Magnitude * 2.0
Position.X + Offset
Vector3.zeroConstrução de Color3 e Acesso a Canais
Construa valores Color3 e acesse seus canais de cor.
Color3.fromRGB(255, 128, 0)
Color.RConstrução de CFrame, Acesso a Membros e Operações
Construa valores CFrame, acesse membros de CFrame e combine-os com CFrames ou valores Vector3.
CFrame.new(Position, LookAtPosition)
CFrame.Angles(RotationX, RotationY, RotationZ)
CFrame.identity
Transform.LookVector
Transform.Position + Vector3.new(0, 1, 0)Concatenação de Strings
Use .. para concatenar duas strings:
"state_" .. CurrentStateVariáveis Locais e Expressões Multilinha
Use uma expressão multilinha para dividir uma fórmula em etapas nomeadas. Uma expressão multilinha suporta declarações local, return, if/elseif/else e expressões independentes. Dentro de um corpo if ou else, use apenas return ou uma expressão independente; declarações if aninhadas e declarações locais não são suportadas.
local normalizedSpeed = Speed / MaxSpeed
local eased = math.clamp(normalizedSpeed, 0, 1)
return eased