Een expressie is een korte Luau-achtige formule die grafiekparameters leest en een waarde retourneert, zoals math.clamp((MovementSpeed + 0.5) / MaxSpeed, 0, 1). Gebruik expressies om een knooppunt-eigenschap of een toestandmachine-overgang aan te sturen. Expressies houden parametertransformaties en animatiebeslissingen in je grafiek, dicht bij de knooppunten die ze aansturen.
Vereisten
Voordat je een expressie maakt, maak jezelf vertrouwd met de Animatie Grafiekeditor, inclusief hoe je deze opent en een animatiegrafiek maakt.
Maak een expressie
Dit voorbeeld gebruikt een expressie om de Positie eigenschap van een Blend1DNode aan te sturen. Configureer het knooppunt met een idle-animatie op positie 0 en een loop-animatie op positie 1. De expressie converteert de bewegingssnelheid van het personage naar het bereik van 0 tot 1 dat het knooppunt gebruikt om tussen die animaties te mengen.
Voeg MovementSpeed en MaxSpeed Number grafiekparameters toe.

Sleep een verbinding van de Positie eigenschapspen van de Blend1DNode en selecteer Nieuwe Expressie.

Voer de volgende expressie in:
math.clamp(MovementSpeed / MaxSpeed, 0, 1)
Klik buiten het expressievak om het te verversen. Terwijl MovementSpeed stijgt naar MaxSpeed, ontvangt de Blend1DNode een waarde van 0 tot 1 en mengt van de idle-animatie naar de loop-animatie.
Nadat je de grafiek op een AnimationTrack hebt geladen, werk je MovementSpeed en MaxSpeed bij vanuit je gameplay-script met AnimationTrack:SetParameter(). Het volgende voorbeeld gebruikt de MoveDirection en WalkSpeed eigenschappen van een Humanoid:
game:GetService("RunService").Stepped:Connect(function()
animationTrack:SetParameter("MovementSpeed", humanoid.MoveDirection.Magnitude * humanoid.WalkSpeed)
animationTrack:SetParameter("MaxSpeed", humanoid.WalkSpeed)
end)De expressie wordt geëvalueerd naarmate de parameterwaarden veranderen. Voor de parameterworkflow, zie API-integratie.
Wat wordt ondersteund
De ondersteuning voor expressies omvat rekenkundige en vergelijkingsoperaties, logische en voorwaardelijke expressies, aanroepen van functies in de math bibliotheek, constructie en lidtoegang voor CFrame, Vector2, Vector3, en Color3 waarden, en stringconcatenatie. De volgende secties sommen de ondersteunde syntaxis en functies op.
Rekenkunde en vergelijkingen
Gebruik standaard rekenkundige en vergelijkingsoperaties, met de gebruikelijke volgorde van bewerkingen. Bijvoorbeeld, // deelt en rondt naar beneden af.
Speed * 2.0 + Offset
(Health / MaxHealth) * 100
DamageMultiplier ^ 2
Count % 3
10 // 3
Speed < 1
Health >= MaxHealthVergelijkingsoperatoren werken met getallen. Gebruik == en ~= om getallen, booleans of strings te vergelijken.
Logica en kortsluiting
and, or, en not volgen de Luau waarheidsgetrouwe en kortsluitende evaluatie. Alleen false en nil worden als onwaar beschouwd.
IsGrounded and GroundSpeed or AirSpeed
not IsDisabledIf-then-else expressies
Gebruik de voorwaardelijke expressievorm van Luau om binnen een enkele expressie te vertakken:
if Speed > 10 then "sprint" elseif Speed > 2 then "run" else "idle"Wiskundige bibliotheek
Gebruik de math bibliotheek. Grafiekexpressies ondersteunen nog niet math.frexp(), math.noise(), of math.randomseed(). math.modf() retourneert momenteel alleen het gehele gedeelte.
math.clamp(Speed / MaxSpeed, 0, 1)
math.sin(Time * 2 * math.pi)
math.atan2(Direction.Y, Direction.X)
math.max(A, B, C)Vectorconstructie en lidtoegang
Construeer Vector2 en Vector3 waarden, voer vectorrekenkunde uit en krijg toegang tot vectorleden zoals Magnitude en Unit.
Vector3.new(math.cos(Time), math.sin(Time), 0)
Vector2.new(InputX, InputY)
MoveDirection.Magnitude * 2.0
Position.X + Offset
Vector3.zeroColor3-constructie en lidtoegang
Construeer Color3 waarden en krijg toegang tot hun kleurkanalen.
Color3.fromRGB(255, 128, 0)
Color.RCFrame-constructie, lidtoegang en bewerkingen
Construeer CFrame waarden, krijg toegang tot CFrame-leden en combineer ze met CFrames of Vector3 waarden.
CFrame.new(Position, LookAtPosition)
CFrame.Angles(RotationX, RotationY, RotationZ)
CFrame.identity
Transform.LookVector
Transform.Position + Vector3.new(0, 1, 0)Stringconcatenatie
Gebruik .. om twee strings samen te voegen:
"state_" .. CurrentStateLokale variabelen en multi-regel expressies
Gebruik een multi-regel expressie om een formule in benoemde stappen op te splitsen. Een multi-regel expressie ondersteunt local declaraties, return, if/elseif/else, en zelfstandige expressies. Binnen een if of else lichaam, gebruik alleen return of een zelfstandige expressie; geneste if-verklaringen en lokale declaraties worden niet ondersteund.
local normalizedSpeed = Speed / MaxSpeed
local eased = math.clamp(normalizedSpeed, 0, 1)
return eased