Memulai
Tutorial menengah

Jebakan Memudar

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

Dalam Lava Mematikan, Anda belajar bagaimana memicu kode berdasarkan perilaku pengguna. Tutorial ini menunjukkan kepada Anda bagaimana membuat platform yang memudar ketika seorang pengguna menginjaknya.

Siapkan

Jika Anda mengikuti Lava Mematikan, Anda dapat menempatkan platform memudar Anda di atas lantai lava yang tidak bisa dilompati oleh pengguna.

  1. Masukkan sebuah bagian dan pindahkan ke tempatnya di dunia Anda. Nama bagian tersebut FadingPlatform.

  2. Ubah ukurannya sehingga pengguna dapat melompat di atasnya.

  3. Pastikan bagian tersebut Terikat.

  4. Masukkan sebuah Script ke dalam bagian tersebut, ganti namanya menjadi FadeOnTouch, dan hapus kode default.

  5. Buat sebuah variabel untuk platform dan sebuah fungsi kosong yang terhubung ke acara Touched dari platform tersebut.


    local platform = script.Parent
    local function fade()
    end
    platform.Touched:Connect(fade)

Memudarkan platform

Membiarkan platform menghilang dalam sekejap akan sangat tidak menyenangkan karena pengguna akan merasa mustahil untuk melintasi celah. Sebaliknya, platform harus memudar sebelum pengguna jatuh untuk memberi mereka kesempatan melompat.

Anda bisa mengubah properti Transparency dan menunggu waktu yang sangat singkat berulang kali untuk mendapatkan efek ini, tetapi memudarnya secara bertahap akan memerlukan setidaknya 10 perubahan antara 0 dan 1. Itu berarti 20 baris kode yang sangat repetitif.

Hal ini bisa dicapai jauh lebih efektif menggunakan loop for yang mengulang kode sejumlah kali yang spesifik. Setiap pengulangan dari kode dikenal sebagai iterasi. Sebuah loop for didefinisikan dengan tiga hal, yang dipisahkan oleh koma:

  • Variabel kontrol - Variabel yang dibuat dan digunakan untuk menghitung loop. Dalam contoh ini, itu adalah count dan nilai awalnya adalah 1.
  • Nilai akhir - Nilai yang harus dicapai agar loop berhenti. Dalam contoh ini, itu adalah 10.
  • Peningkatan langkah (opsional) - Menentukan apa yang akan ditambahkan ke variabel kontrol setiap loop. Jika diabaikan, itu default ke 1, sehingga dalam contoh ini tidak diperlukan.

Di FadeOnTouch:

  1. Dalam fungsi, buat loop for yang dimulai dari 1 yang mengiterasi sebanyak 10 kali.

  2. Di dalam loop for, atur properti Transparency ke variabel kontrol dibagi 10.

  3. Panggil fungsi task.wait() dengan waktu 0.1.


    local platform = script.Parent
    local function fade()
    for count = 1, 10 do
    platform.Transparency = count / 10
    task.wait(0.1)
    end
    end
    platform.Touched:Connect(fade)

Ketika loop dijalankan, jumlah count meningkat 1 dengan setiap iterasi. Ini berarti bahwa Transparency platform akan meningkat sebesar 0.1 setiap 0.1 detik, mencapai transparansi penuh setelah 1 detik.

Muncul Kembali

Setelah platform menghilang, pengguna harus jatuh melewatinya. Platform juga harus muncul kembali beberapa detik setelah memudar - jika tidak, pengguna tidak akan pernah memiliki kesempatan untuk mencoba melompat lagi jika mereka gagal. Properti CanCollide mengontrol apakah pengguna dapat jatuh melalui sebuah bagian.

  1. Atur properti CanCollide dari platform menjadi false setelah loop for.

  2. Tunggu beberapa detik menggunakan fungsi task.wait().

  3. Atur kembali properti CanCollide menjadi true.

  4. Atur kembali properti Transparency menjadi 0.


    local platform = script.Parent
    local function fade()
    for count = 1, 10 do
    platform.Transparency = count / 10
    task.wait(0.1)
    end
    platform.CanCollide = false
    task.wait(3)
    platform.CanCollide = true
    platform.Transparency = 0
    end
    platform.Touched:Connect(fade)

Variabel Debounce

Dalam Lava Mematikan, Anda belajar bahwa acara Touched berjalan setiap kali bagian tubuh pengguna bersentuhan dengan bagian tersebut. Perilaku ini menyebabkan masalah ketika pengguna berlari di atas platform memudar: fungsi akan dijalankan beberapa kali, mereset loop setiap kali.

Agar kode berfungsi dengan baik, fungsi harus hanya dijalankan sekali ketika pengguna menyentuh platform untuk pertama kalinya. Memastikan bahwa sebuah aksi hanya dipicu sekali ketika akan dipicu beberapa kali dikenal sebagai debouncing.

Untuk mendebounce sebuah fungsi, variabel boolean dapat digunakan untuk melacak kapan platform sudah disentuh. Boolean hanya dapat berisi nilai true dan false. Buat sebuah variabel bernama isTouched dan atur menjadi false.


local platform = script.Parent
local isTouched = false
local function fade()
for count = 1, 10 do
platform.Transparency = count / 10
task.wait(0.1)
end
platform.CanCollide = false
task.wait(3)
platform.CanCollide = true
platform.Transparency = 0
end
platform.Touched:Connect(fade)

Periksa variabel

Pernyataan if dapat digunakan untuk hanya menjalankan kode dalam fungsi fade jika variabel debouncing isTouched adalah false. Bungkus badan fungsi fade dalam pernyataan if dengan kondisi not isTouched.


local platform = script.Parent
local isTouched = false
local function fade()
if not isTouched then
for count = 1, 10 do
platform.Transparency = count / 10
task.wait(0.1)
end
platform.CanCollide = false
task.wait(3)
platform.CanCollide = true
platform.Transparency = 0
end
end
platform.Touched:Connect(fade)

Operator Luau not membalik nilai dari apapun yang mengikutinya. Dalam istilah kondisional, ini berarti bahwa pernyataan if pertama berperilaku sama dengan pernyataan yang mengikuti.


if not isTouched then
end
if isTouched == false then
end
if isTouched == nil then
end

Toggle debounce

Saat ini, kode dalam fungsi fade akan selalu dijalankan karena isTouched adalah false dan not isTouched dievaluasi menjadi true. Untuk menyelesaikan rutinitas debounce, Anda perlu mengubah nilai variabel di dua tempat.

  1. Atur isTouched menjadi true di dalam pernyataan if, sebelum platform mulai memudar.
  2. Atur kembali ke false setelah platform muncul kembali.

local function fade()
if not isTouched then
isTouched = true
for count = 1, 10 do
platform.Transparency = count / 10
task.wait(0.1)
end
platform.CanCollide = false
task.wait(3)
platform.CanCollide = true
platform.Transparency = 0
isTouched = false
end
end
platform.Touched:Connect(fade)

Dan itu saja! Uji kode Anda sekarang, dan Anda seharusnya menemukan bahwa platform memudar ketika pengguna melompat di atasnya dan muncul kembali beberapa detik kemudian.

Anda dapat menggandakan platform ini di seluruh celah yang lebih lebar untuk membuat rintangan yang menantang dan mengubah kecepatan mereka memudar untuk menyeimbangkan kesulitan.

Kode akhir


local platform = script.Parent
local isTouched = false
local function fade()
if not isTouched then
isTouched = true
for count = 1, 10 do
platform.Transparency = count / 10
task.wait(0.1)
end
platform.CanCollide = false
task.wait(3)
platform.CanCollide = true
platform.Transparency = 0
isTouched = false
end
end
platform.Touched:Connect(fade)
©2026 Roblox Corporation. Roblox, logo Roblox, dan Powering Imagination termasuk dalam merek dagang kami yang terdaftar dan tidak terdaftar di AS dan negara lainnya.