Espressioni dell'editor grafico

*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.

Un espressione è una breve formula simile a Luau che legge i parametri del grafo e restituisce un valore, come math.clamp((MovementSpeed + 0.5) / MaxSpeed, 0, 1). Usa le espressioni per controllare una proprietà del nodo o una transizione della macchina a stati. Le espressioni mantengono le trasformazioni dei parametri e le decisioni di animazione nel tuo grafo, vicino ai nodi che controllano.

Requisiti

Prima di creare un'espressione, familiarizza con l'Editor del Grafo di Animazione, inclusa la modalità per aprirlo e creare un grafo di animazione.

Crea un'espressione

Questo esempio utilizza un'espressione per controllare la proprietà Posizione di un Blend1DNode. Configura il nodo con un'animazione di inattività alla posizione 0 e un'animazione di corsa alla posizione 1. L'espressione converte la velocità di movimento del personaggio nell'intervallo da 0 a 1 che il nodo utilizza per mescolare tra quelle animazioni.

  1. Aggiungi i parametri del grafo di tipo Numero MovementSpeed e MaxSpeed.

    Pannello dei parametri che mostra i parametri Number MovementSpeed e MaxSpeed.
  2. Trascina una connessione dal pin della proprietà Posizione del Blend1DNode e seleziona Nuova Espressione.

    Dimostrazione animata della creazione di un nodo Espressione dal pin della proprietà Posizione di Blend1D.
  3. Inserisci la seguente espressione:

    math.clamp(MovementSpeed / MaxSpeed, 0, 1)
    Dimostrazione animata dell'inserimento di un'espressione in un nodo Espressione.
  4. Clicca al di fuori della casella di espressione per aggiornarla. Man mano che MovementSpeed aumenta verso MaxSpeed, il Blend1DNode riceve un valore da 0 a 1 e mescola dall'animazione di inattività all'animazione di corsa.

Dopo aver caricato il grafo su un AnimationTrack, aggiorna MovementSpeed e MaxSpeed dal tuo script di gioco con AnimationTrack:SetParameter(). Il seguente esempio utilizza le proprietà MoveDirection e WalkSpeed di un Humanoid:

Script - Controlla i parametri dell'espressione
game:GetService("RunService").Stepped:Connect(function()
animationTrack:SetParameter("MovementSpeed", humanoid.MoveDirection.Magnitude * humanoid.WalkSpeed)
animationTrack:SetParameter("MaxSpeed", humanoid.WalkSpeed)
end)

L'espressione viene valutata man mano che i valori dei parametri cambiano. Per il flusso di lavoro dei parametri, vedere Integrazione API.

Cosa è supportato

Il supporto per le espressioni include operazioni aritmetiche e di confronto, espressioni logiche e condizionali, chiamate a funzioni nella libreria math, costruzione e accesso ai membri per i valori CFrame, Vector2, Vector3 e Color3, e concatenazione di stringhe. Le sezioni seguenti elencano la sintassi e le funzioni supportate.

Aritmetica e confronti

Usa le normali operazioni aritmetiche e di confronto, con il consueto ordine delle operazioni. Ad esempio, // divide e arrotonda per difetto.

Speed * 2.0 + Offset
(Health / MaxHealth) * 100
DamageMultiplier ^ 2
Count % 3
10 // 3
Speed < 1
Health >= MaxHealth

Gli operatori di confronto funzionano con i numeri. Usa == e ~= per confrontare numeri, booleani o stringhe.

Logica e short-circuiting

and, or e not seguono la verità di Luau e la valutazione short-circuit. Solo false e nil sono considerati falsi.

IsGrounded and GroundSpeed or AirSpeed
not IsDisabled

Espressioni if-then-else

Usa la forma di espressione condizionale di Luau per ramificare all'interno di un'unica espressione:

if Speed > 10 then "sprint" elseif Speed > 2 then "run" else "idle"

Libreria matematica

Usa la libreria math. Le espressioni del grafo non supportano ancora math.frexp(), math.noise() o math.randomseed(). math.modf() attualmente restituisce solo la porzione intera.

math.clamp(Speed / MaxSpeed, 0, 1)
math.sin(Time * 2 * math.pi)
math.atan2(Direction.Y, Direction.X)
math.max(A, B, C)

Costruzione di vettori e accesso ai membri

Costruisci valori Vector2 e Vector3, esegui operazioni vettoriali e accedi ai membri del vettore come 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

Costruzione di Color3 e accesso ai membri

Costruisci valori Color3 e accedi ai loro canali di colore.

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

Costruzione di CFrame, accesso ai membri e operazioni

Costruisci valori CFrame, accedi ai membri di CFrame e combinati con CFrames o valori Vector3.

CFrame.new(Position, LookAtPosition)
CFrame.Angles(RotationX, RotationY, RotationZ)
CFrame.identity
Transform.LookVector
Transform.Position + Vector3.new(0, 1, 0)

Concatenazione di stringhe

Usa .. per concatenare due stringhe:

"state_" .. CurrentState

Variabili locali ed espressioni multi-linea

Usa un'espressione multi-linea per suddividere una formula in passaggi nominati. Un'espressione multi-linea supporta dichiarazioni local, return, if/elseif/else e espressioni autonome. All'interno di un corpo if o else, usa solo return o un'espressione autonoma; le dichiarazioni if annidate e le dichiarazioni locali non sono supportate.

local normalizedSpeed = Speed / MaxSpeed
local eased = math.clamp(normalizedSpeed, 0, 1)
return eased
© 2026 Roblox Corporation. Roblox, il logo Roblox e Powering Imagination sono tra i nostri marchi registrati e non registrati negli Stati Uniti. e altri paesi.