Bir ifade, grafik parametrelerini okuyan ve bir değer döndüren kısa bir Luau benzeri formüldür; örneğin math.clamp((MovementSpeed + 0.5) / MaxSpeed, 0, 1). İfadeleri, bir düğüm özelliğini veya bir durum makinesi geçişini yönlendirmek için kullanın. İfadeler, parametre dönüşümlerini ve animasyon kararlarını grafiğinizde, yönlendirdikleri düğümlere yakın tutar.
Ön koşullar
Bir ifade oluşturmadan önce, Animasyon Grafik Editörü ile tanışın; bunu nasıl açacağınızı ve bir animasyon grafiği oluşturacağınızı öğrenin.
Bir ifade oluşturma
Bu örnek, bir Blend1DNode'un Pozisyon özelliğini yönlendirmek için bir ifade kullanır. Düğümü, 0 konumunda bir duraklama animasyonu ve 1 konumunda bir koşu animasyonu ile yapılandırın. İfade, karakterin hareket hızını, düğümün bu animasyonlar arasında karıştırmak için kullandığı 0 ile 1 aralığına dönüştürür.
MovementSpeed ve MaxSpeed Sayı grafik parametrelerini ekleyin.

Blend1DNode'un Pozisyon özellik pininden bir bağlantı sürükleyin ve Yeni İfade seçeneğini seçin.

Aşağıdaki ifadeyi girin:
math.clamp(MovementSpeed / MaxSpeed, 0, 1)
İfade kutusunun dışına tıklayarak yenileyin. MovementSpeed MaxSpeed'e doğru yükseldikçe, Blend1DNode 0 ile 1 arasında bir değer alır ve duraklama animasyonundan koşu animasyonuna geçiş yapar.
Grafiği bir AnimationTrack üzerine yükledikten sonra, AnimationTrack:SetParameter() ile oyun oynama scriptinizden MovementSpeed ve MaxSpeed'i güncelleyin. Aşağıdaki örnek, bir Humanoid'un MoveDirection ve WalkSpeed özelliklerini kullanır:
game:GetService("RunService").Stepped:Connect(function()
animationTrack:SetParameter("MovementSpeed", humanoid.MoveDirection.Magnitude * humanoid.WalkSpeed)
animationTrack:SetParameter("MaxSpeed", humanoid.WalkSpeed)
end)İfade, parametre değerleri değiştikçe değerlendirilir. Parametre iş akışı için API entegrasyonu kısmına bakın.
Neler destekleniyor
İfade desteği, aritmetik ve karşılaştırma işlemleri, mantıksal ve koşullu ifadeler, math kütüphanesindeki fonksiyon çağrıları, CFrame, Vector2, Vector3 ve Color3 değerleri için yapılandırma ve üye erişimi ile dize birleştirmeyi içerir. Aşağıdaki bölümler, desteklenen sözdizimini ve fonksiyonları listeler.
Aritmetik ve karşılaştırmalar
Standart aritmetik ve karşılaştırma işlemlerini, alışıldık işlem sırasıyla kullanın. Örneğin, // bölme işlemi yapar ve aşağı yuvarlar.
Speed * 2.0 + Offset
(Health / MaxHealth) * 100
DamageMultiplier ^ 2
Count % 3
10 // 3
Speed < 1
Health >= MaxHealthKarşılaştırma operatörleri sayılarla çalışır. Sayıları, boolean'ları veya dizeleri karşılaştırmak için == ve ~= kullanın.
Mantık ve kısa devre
and, or ve not, Luau'nun doğruluk ve kısa devre değerlendirmesini takip eder. Sadece false ve nil yanlış olarak kabul edilir.
IsGrounded and GroundSpeed or AirSpeed
not IsDisabledIf-then-else ifadeleri
Tek bir ifade içinde dallanmak için Luau'nun koşullu ifade biçimini kullanın:
if Speed > 10 then "sprint" elseif Speed > 2 then "run" else "idle"Matematik kütüphanesi
math kütüphanesini kullanın. Grafik ifadeleri henüz math.frexp(), math.noise() veya math.randomseed()'i desteklemiyor. math.modf() şu anda yalnızca tam sayı kısmını döndürmektedir.
math.clamp(Speed / MaxSpeed, 0, 1)
math.sin(Time * 2 * math.pi)
math.atan2(Direction.Y, Direction.X)
math.max(A, B, C)Vektör oluşturma ve üye erişimi
Vector2 ve Vector3 değerlerini oluşturun, vektör aritmetiği yapın ve Magnitude ve Unit gibi vektör üyelerine erişin.
Vector3.new(math.cos(Time), math.sin(Time), 0)
Vector2.new(InputX, InputY)
MoveDirection.Magnitude * 2.0
Position.X + Offset
Vector3.zeroColor3 oluşturma ve üye erişimi
Color3 değerlerini oluşturun ve renk kanallarına erişin.
Color3.fromRGB(255, 128, 0)
Color.RCFrame oluşturma, üye erişimi ve işlemler
CFrame değerlerini oluşturun, CFrame üyelerine erişin ve bunları CFrame'ler veya Vector3 değerleri ile birleştirin.
CFrame.new(Position, LookAtPosition)
CFrame.Angles(RotationX, RotationY, RotationZ)
CFrame.identity
Transform.LookVector
Transform.Position + Vector3.new(0, 1, 0)Dize birleştirme
İki dizeyi birleştirmek için .. kullanın:
"state_" .. CurrentStateYerel değişkenler ve çok satırlı ifadeler
Bir formülü adlandırılmış adımlara ayırmak için çok satırlı bir ifade kullanın. Çok satırlı bir ifade, local bildirimlerini, return, if/elseif/else ve bağımsız ifadeleri destekler. Bir if veya else bloğu içinde yalnızca return veya bağımsız bir ifade kullanın; iç içe if ifadeleri ve yerel bildirimler desteklenmez.
local normalizedSpeed = Speed / MaxSpeed
local eased = math.clamp(normalizedSpeed, 0, 1)
return eased