Memulai
Tutorial menengah

Memutar animasi karakter

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

Memutar animasi karakter adalah bagian penting dari apa yang membuat avatar dan karakter non-playable (NPC) ekspresif, realistis, dan menarik bagi audiens Anda. Selain memberikan visual yang imersif, animasi karakter memberikan umpan balik kepada pemain dari tindakan mereka, panduan tentang cara menjelajahi lingkungan, dan informasi penting tentang karakter mereka dan yang lainnya.

Dengan menggunakan file Hazardous Space Station .rbxl sebagai referensi, tutorial ini menunjukkan kepada Anda cara memutar animasi karakter menggunakan dua teknik berbeda, termasuk panduan tentang:

  • Menukar ID aset animasi karakter default dengan animasi kustom Anda sendiri.
  • Memicu animasi sebagai respons terhadap tindakan karakter dalam ruang 3D.

Setelah Anda menyelesaikan tutorial ini, Anda akan memiliki keterampilan untuk menyesuaikan animasi untuk berbagai situasi permainan.

Mengubah animasi default

Setiap karakter dengan objek Humanoid default, baik itu avatar yang dikendalikan pemain atau karakter non-pemain (NPC), mencakup serangkaian animasi default yang diputar setiap kali karakter melakukan tindakan spesifik dalam pengalaman, seperti berlari, memanjat, dan melompat. Roblox menyediakan animasi ini secara langsung untuk setiap pengalaman tanpa usaha scripting tambahan.

Animasi Jatuh Default
Animasi Berenang Default
Animasi Memanjat Default

Namun, jika animasi default ini tidak memenuhi persyaratan desain untuk lingkungan, estetika, atau narasi keseluruhan dunia Anda, Anda dapat menukarnya dengan animasi kustom yang berlaku untuk setiap pemain yang bergabung dengan pengalaman Anda.

Untuk mendemonstrasikan, bagian berikut mengajarkan Anda cara menukar animasi berjalan default dengan animasi siklus berjalan kustom dari Buat Animasi Karakter. Dengan menggunakan proses yang sama, Anda dapat menukar animasi default lainnya dengan ID aset animasi Anda sendiri.

Animasi Berjalan Default
Animasi Berjalan Kustom

Buat skrip

Setiap objek Humanoid karakter termasuk objek Animator anak yang menyimpan semua animasi default karakter. Untuk mengatur salah satu animasi default ini dengan ID aset baru, Anda harus membuat skrip di ServerScriptService sehingga dapat merujuk dan menimpa nilai default objek Animator segera setelah pemain memuat ke dalam pengalaman.

Untuk membuat skrip yang akan merujuk ID aset animasi default:

  1. Di jendela Explorer, tambahkan skrip baru ke ServerScriptService.

    1. Arahkan ke ServerScriptService dan klik tombol ⊕.
    2. Dari menu konteks, masukkan Skrip.
  2. Di skrip baru, tempelkan kode berikut:


    local Players = game:GetService("Players")
    local function onCharacterAdded(character)
    local humanoid = character:WaitForChild("Humanoid")
    local animator = humanoid:WaitForChild("Animator")
    print("Animator ditemukan!")
    end
    local function onPlayerAdded(player)
    player.CharacterAdded:Connect(onCharacterAdded)
    end
    Players.PlayerAdded:Connect(onPlayerAdded)

Skrip ResetDefaultAnimations dimulai dengan mendapatkan layanan Players, yang berisi semua objek Player untuk pemain saat mereka terhubung ke server. Ketika setiap karakter pemain dimuat ke dalam pengalaman, fungsi onCharacterAdded menunggu hingga mendeteksi objek Humanoid dan Animator karakter.

Ketika mendeteksi objek Animator untuk pertama kalinya, skrip kemudian mencetak "Animator ditemukan!" untuk memberi tahu Anda bahwa skrip berfungsi seperti yang diharapkan.

Ganti ID aset

Sekarang Anda tahu skrip Anda dapat mendeteksi kapan pemain memuat dan terhubung ke server, Anda dapat memodifikasi skrip Anda untuk secara khusus merujuk ID animasi yang ingin Anda tukar dengan animasi kustom Anda sendiri.

Tabel berikut mencakup semua animasi karakter default yang dapat Anda panggil dan ganti dalam objek Animator. Perhatikan bahwa Idle memiliki dua variasi yang dapat Anda program untuk diputar lebih atau kurang sering.

Aksi KarakterReferensi Skrip Animasi
BerlarianimateScript.run.RunAnim.AnimationId
BerjalananimateScript.walk.WalkAnim.AnimationId
MelompatanimateScript.jump.JumpAnim.AnimationId
Idle

animateScript.idle.Animation1.AnimationId
animateScript.idle.Animation2.AnimationId

JatuhanimateScript.fall.FallAnim.AnimationId
BerenanganimateScript.swim.Swim.AnimationId
Berenang (Idle)animateScript.swimidle.SwimIdle.AnimationId
MemanjatanimateScript.climb.ClimbAnim.AnimationId

Untuk mengganti ID aset animasi berjalan default:

  1. Panggil referensi skrip animasi berjalan default, lalu ganti ID aset dengan ID aset animasi kustom Anda sendiri. Misalnya, sampel kode berikut merujuk animasi siklus berjalan dari Buat Animasi Karakter.


    local Players = game:GetService("Players")
    local function onCharacterAdded(character)
    local humanoid = character:WaitForChild("Humanoid")
    local animator = humanoid:WaitForChild("Animator")
    print("Animator ditemukan!")
    local animateScript = character:WaitForChild("Animate")
    animateScript.walk.WalkAnim.AnimationId = "rbxassetid://122652394532816"
    end
    local function onPlayerAdded(player)
    player.CharacterAdded:Connect(onCharacterAdded)
    end
    Players.PlayerAdded:Connect(onPlayerAdded)
  2. Uji pengalaman Anda untuk memastikan animasi berjalan kustom Anda menggantikan animasi default.

    1. Pilih Test dari menu dropdown dan klik tombol Play di sebelah kanan untuk memulai pengujian.

      Opsi Uji dalam menu pengujian dropdown di mezzanine Studio.
    2. Berjalan di sekitar stasiun luar angkasa dengan avatar Anda.

Memicu animasi

Sementara teknik sebelumnya berfokus pada menukar animasi default yang otomatis diputar setiap kali karakter melakukan tindakan spesifik dalam pengalaman, Anda dapat memicu animasi secara programatik untuk diputar sebagai respons terhadap setiap tindakan karakter dalam ruang 3D, seperti mengambil item atau menerima kerusakan dari bahaya.

Dalam contoh ini, saat pemain menyentuh platform emas, mereka memicu animasi tarian karakter non-default.

Metode memutar animasi ini berguna karena memberikan umpan balik instan kepada pemain tentang bagaimana mereka harus berinteraksi dengan objek di lingkungan mereka. Untuk mendemonstrasikan, bagian berikut menunjukkan kepada Anda cara memicu animasi setiap kali karakter terlalu dekat dengan kebocoran uap berbahaya sebagai cara untuk mengajarkan pemain secara halus untuk menghindari berjalan terlalu dekat ke dinding.

Sisipkan volume

Salah satu cara paling umum untuk memicu perilaku permainan yang unik adalah dengan menggunakan volume, atau wilayah tak terlihat dalam ruang 3D, untuk mendeteksi kapan karakter atau objek berinteraksi dengan area tertentu dari lingkungan. Ketika Anda memasangkan volume dengan skrip, Anda dapat menggunakan umpan balik tabrakan mereka untuk memicu tindakan secara programatis, seperti mengurangi kesehatan pemain atau memutar animasi.

Pandangan jauh dari sebuah ruangan mansion. Sebuah garis luar dari kotak ada di tengah ruangan untuk menandakan volume yang memicu peristiwa permainan.
The Mystery of Duvall Drive menggunakan volume untuk memicu peristiwa permainan yang mengubah penampilan visual ruangan.

Saat menambahkan volume ke pengalaman Anda, penting untuk menyesuaikannya sehingga hanya mencakup ruang yang ingin Anda gunakan untuk memicu animasi Anda. Jika Anda membuat volume Anda terlalu kecil, pemain mungkin tidak pernah bertabrakan dengan area tersebut untuk memutar animasi; sebaliknya, jika Anda membuat volume Anda terlalu besar, animasi akan diputar sebelum pemain mencapai item atau area yang menarik, dan mereka mungkin tidak memahami apa yang mereka lakukan untuk memicu animasi.

Untuk menyisipkan volume di sekitar kebocoran uap yang akan memicu animasi:

  1. Di jendela Explorer, tambahkan bagian blok baru.
  2. Posisi dan ubah ukuran blok hingga mencakup area yang ingin Anda gunakan untuk memicu animasi Anda.
  3. Di jendela Properties,
    1. Atur Name menjadi AnimationDetector.

    2. Atur Transparency menjadi 1 untuk membuat blok tak terlihat.

      Garis luar dari blok terlihat di sekitar ventilasi uap untuk menandakan posisi volume.

Buat skrip

Sekarang Anda memiliki wilayah yang terdefinisi untuk memicu animasi Anda, saatnya untuk membuat skrip yang mendeteksi secara programatis kapan pemain bertabrakan dengan volume. Anda kemudian dapat mendengarkan peristiwa tabrakan untuk memicu animasi apapun yang masuk akal untuk kebutuhan permainan Anda.

Misalnya, teknik animasi ini menggunakan LocalScript alih-alih Script untuk memberikan umpan balik langsung kepada pemain ketika mereka bertabrakan dengan volume. Jika server mendengarkan untuk tabrakan dan memutar animasi, mungkin ada jeda antara pemain menyentuh volume di klien mereka dan melihat animasi diputar karena waktu replikasi dari server ke klien.

Untuk membuat skrip lokal yang akan mendeteksi kapan karakter pemain lokal menyentuh volume:

  1. Di jendela Explorer, tambahkan skrip baru ke StarterCharacterScripts. Penempatan ini memastikan skrip dan anak-anaknya disalin ke dalam karakter pemain saat bergabung dan ketika mereka respawn kembali ke dalam pengalaman.

    1. Perluas StarterPlayer, lalu arahkan ke anaknya StarterCharacterScripts dan klik tombol ⊕.
    2. Dari menu konteks, masukkan LocalScript dan ubah namanya menjadi TriggerAnimation.
  2. Di skrip baru, tempelkan kode berikut:


    local Workspace = game:GetService("Workspace")
    local animation = script:WaitForChild("Animation")
    local humanoid = script.Parent:WaitForChild("Humanoid")
    local animator = humanoid:WaitForChild("Animator")
    local animationTrack = animator:LoadAnimation(animation)
    local animationDetector = Workspace:WaitForChild("AnimationDetector")
    local debounce = false
    animationDetector.Touched:Connect(function(hit)
    if debounce then
    return
    end
    local hitCharacter = hit:FindFirstAncestorWhichIsA("Model")
    if hitCharacter ~= localCharacter then
    return
    end
    debounce = true
    animationTrack:Play()
    animationTrack.Ended:Wait()
    debounce = false
    end)

Skrip TriggerAnimation dimulai dengan mendapatkan layanan Workspace, yang berisi semua objek yang ada di dunia 3D. Ini penting karena skrip perlu merujuk objek Part yang bertindak sebagai volume Anda.

Untuk setiap karakter pemain yang dimuat atau respawn ke dalam pengalaman, skrip menunggu:

  • Objek anaknya Animation, yang akan Anda tambahkan di bagian berikutnya.
  • Objek Humanoid dan Animator karakter.
  • Objek volume di workspace yang bernama AnimationDetector.

Ketika apapun bertabrakan dengan volume, fungsi penangan acara Touched mendapatkan pendahulu pertama yang merupakan Model, yang seharusnya menjadi karakter jika BasePart yang bertabrakan dengan volume adalah keturunan dari model karakter. Jika iya, fungsi kemudian memeriksa untuk melihat apakah Model adalah karakter pemain lokal. Jika iya, fungsi kemudian:

  • Mengatur debounce menjadi true.
  • Memutar dan menunggu sampai animasi selesai.
  • Mengatur debounce kembali ke false.

Mengatur debounce dari false ke true ke false lagi setelah animasi selesai diputar adalah pola debounce yang mencegah animasi dipicu berulang kali saat pemain terus-menerus bertabrakan dengan volume. Untuk informasi lebih lanjut tentang pola debounce ini, lihat Deteksi tabrakan.

Tambahkan animasi

Jika Anda menguji pengalaman Anda saat ini, skrip TriggerAnimation Anda masih tidak akan dapat memutar animasi sebagai respons terhadap tabrakan pemain lokal-volume. Ini karena ia menunggu objek anak Animation dengan ID aset animasi yang dapat dirujuk, dan objek Animation itu tidak ada saat ini.

Untuk menambahkan animasi agar skrip lokal merujuk ketika pemain bertabrakan dengan volume:

  1. Di jendela Explorer, tambahkan animasi baru ke TriggerAnimation.

    1. Arahkan ke TriggerAnimation dan klik tombol ⊕.
    2. Dari menu konteks, masukkan Animation.
  2. Pilih objek animasi baru, lalu di jendela Properties, atur AnimationID ke ID aset animasi yang ingin Anda picu ketika pemain menyentuh volume. Misalnya, contoh Hazardous Space Station merujuk rbxassetid://3716468774 untuk memutar animasi karakter jatuh ke belakang.

  3. Uji pengalaman Anda untuk memastikan animasi Anda diputar ketika pemain berada dekat kebocoran uap pertama.

©2026 Roblox Corporation. Roblox, logo Roblox, dan Powering Imagination termasuk dalam merek dagang kami yang terdaftar dan tidak terdaftar di AS dan negara lainnya.