Expressões do Editor de Gráficos

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

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.

  1. Adicione os parâmetros de gráfico do tipo Número MovementSpeed e MaxSpeed.

    Painel de parâmetros mostrando os parâmetros Number MovementSpeed e MaxSpeed.
  2. Arraste uma conexão do pino da propriedade Position do Blend1DNode e selecione Nova Expressão.

    Demonstração animada de como criar um nó de Expressão a partir do pino da propriedade Position do Blend1D.
  3. Insira a seguinte expressão:

    math.clamp(MovementSpeed / MaxSpeed, 0, 1)
    Demonstração animada de como inserir uma expressão em um nó de Expressão.
  4. 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:

Script - Controlar parâmetros da expressão
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 >= MaxHealth

Os 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 IsDisabled

Expressõ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.zero

Construção de Color3 e Acesso a Canais

Construa valores Color3 e acesse seus canais de cor.

Color3.fromRGB(255, 128, 0)
Color.R

Construçã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_" .. CurrentState

Variá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
©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.