Ekspresi Editor Grafik

*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.

Sebuah ekspresi adalah rumus pendek seperti Luau yang membaca parameter grafik dan mengembalikan nilai, seperti math.clamp((MovementSpeed + 0.5) / MaxSpeed, 0, 1). Gunakan ekspresi untuk menggerakkan properti node atau transisi mesin keadaan. Ekspresi menjaga transformasi parameter dan keputusan animasi dalam grafik Anda, dekat dengan node yang mereka gerakkan.

Prasyarat

Sebelum Anda membuat ekspresi, kenali diri Anda dengan Editor Grafik Animasi, termasuk cara membukanya dan membuat grafik animasi.

Buat ekspresi

Contoh ini menggunakan ekspresi untuk menggerakkan properti Posisi dari Blend1DNode. Konfigurasikan node dengan animasi diam pada posisi 0 dan animasi berlari pada posisi 1. Ekspresi mengubah kecepatan gerak karakter menjadi rentang 0 hingga 1 yang digunakan node untuk mencampur antara animasi tersebut.

  1. Tambahkan parameter grafik Number MovementSpeed dan MaxSpeed.

    Panel Parameter menunjukkan parameter Number MovementSpeed dan MaxSpeed.
  2. Seret koneksi dari pin properti Posisi dari Blend1DNode dan pilih Ekspresi Baru.

    Demonstrasi animasi membuat node Ekspresi dari pin properti Posisi Blend1D.
  3. Masukkan ekspresi berikut:

    math.clamp(MovementSpeed / MaxSpeed, 0, 1)
    Demonstrasi animasi memasukkan ekspresi dalam node Ekspresi.
  4. Klik di luar kotak ekspresi untuk menyegarkannya. Saat MovementSpeed meningkat menuju MaxSpeed, Blend1DNode menerima nilai dari 0 hingga 1 dan mencampur dari animasi diam ke animasi berlari.

Setelah Anda memuat grafik ke dalam AnimationTrack, perbarui MovementSpeed dan MaxSpeed dari skrip permainan Anda dengan AnimationTrack:SetParameter(). Contoh berikut menggunakan properti MoveDirection dan WalkSpeed dari Humanoid:

Skrip - Menggerakkan parameter ekspresi
game:GetService("RunService").Stepped:Connect(function()
animationTrack:SetParameter("MovementSpeed", humanoid.MoveDirection.Magnitude * humanoid.WalkSpeed)
animationTrack:SetParameter("MaxSpeed", humanoid.WalkSpeed)
end)

Ekspresi dievaluasi saat nilai parameter berubah. Untuk alur kerja parameter, lihat integrasi API.

Apa yang didukung

Dukungan ekspresi mencakup operasi aritmatika dan perbandingan, ekspresi logis dan kondisional, panggilan ke fungsi dalam pustaka math, konstruksi dan akses anggota untuk nilai CFrame, Vector2, Vector3, dan Color3, serta penggabungan string. Bagian berikut mencantumkan sintaks dan fungsi yang didukung.

Aritmatika dan perbandingan

Gunakan operasi aritmatika dan perbandingan standar, dengan urutan operasi yang biasa. Misalnya, // membagi dan membulatkan ke bawah.

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

Operator perbandingan bekerja dengan angka. Gunakan == dan ~= untuk membandingkan angka, boolean, atau string.

Logika dan pemotongan pendek

and, or, dan not mengikuti kebenaran Luau dan evaluasi pemotongan pendek. Hanya false dan nil yang dianggap salah.

IsGrounded and GroundSpeed or AirSpeed
not IsDisabled

Ekspresi if-then-else

Gunakan bentuk ekspresi kondisional Luau untuk bercabang dalam satu ekspresi:

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

Pustaka matematika

Gunakan pustaka math. Ekspresi grafik belum mendukung math.frexp(), math.noise(), atau math.randomseed(). math.modf() saat ini hanya mengembalikan bagian integer.

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

Konstruksi vektor dan akses anggota

Konstruksikan nilai Vector2 dan Vector3, lakukan aritmatika vektor, dan akses anggota vektor seperti Magnitude dan Unit.

Vector3.new(math.cos(Time), math.sin(Time), 0)
Vector2.new(InputX, InputY)
MoveDirection.Magnitude * 2.0
Position.X + Offset
Vector3.zero

Konstruksi Color3 dan akses anggota

Konstruksikan nilai Color3 dan akses saluran warnanya.

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

Konstruksi CFrame, akses anggota, dan operasi

Konstruksikan nilai CFrame, akses anggota CFrame, dan gabungkan dengan CFrame atau nilai Vector3.

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

Penggabungan string

Gunakan .. untuk menggabungkan dua string:

"state_" .. CurrentState

Variabel lokal dan ekspresi multi-baris

Gunakan ekspresi multi-baris untuk memecah rumus menjadi langkah-langkah bernama. Ekspresi multi-baris mendukung deklarasi local, return, if/elseif/else, dan ekspresi mandiri. Di dalam tubuh if atau else, gunakan hanya return atau ekspresi mandiri; pernyataan if bersarang dan deklarasi lokal tidak didukung.

local normalizedSpeed = Speed / MaxSpeed
local eased = math.clamp(normalizedSpeed, 0, 1)
return eased
©2026 Roblox Corporation. Roblox, logo Roblox, dan Powering Imagination termasuk dalam merek dagang kami yang terdaftar dan tidak terdaftar di AS dan negara lainnya.