Dalam Lava Mematikan, Anda telah belajar bagaimana memicu kode berdasarkan perilaku pengguna. Tutorial ini menunjukkan kepada Anda cara 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.
Masukkan sebuah bagian dan pindahkan ke tempatnya di dunia Anda. Namai FadingPlatform.
Ubah ukurannya sehingga seorang pengguna dapat melompat di atasnya.
Pastikan itu Terikat.

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

Buat sebuah variabel untuk platform dan sebuah fungsi kosong yang terhubung ke event Touched dari platform.
local platform = script.Parentlocal function fade()endplatform.Touched:Connect(fade)
Memudarkan platform
Membiarkan platform menghilang dalam sekejap tidak akan menyenangkan karena pengguna akan merasa mustahil untuk melintasi celah tersebut. Sebaliknya, platform harus memudar sebelum pengguna jatuh melaluinya untuk memberi mereka kesempatan melompat.
Anda bisa mengubah properti Transparency dan menunggu waktu yang sangat singkat berulang kali untuk mendapatkan efek ini, tetapi memudar secara bertahap akan membutuhkan setidaknya 10 perubahan antara 0 dan 1. Itu adalah 20 baris kode yang sangat repetitif.
Ini dapat dicapai dengan lebih efektif menggunakan for loop yang mengulangi kode sejumlah kali tertentu. Setiap loop dari kode dikenal sebagai iterasi. Sebuah for loop didefinisikan dengan tiga hal, 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.
- Inkrement langkahOPSIONAL- Menentukan apa yang ditambahkan ke variabel kontrol setiap loop. Jika diabaikan, secara default nilainya adalah 1, jadi dalam contoh ini tidak diperlukan.
Dalam FadeOnTouch:
Dalam fungsi, buat sebuah for loop yang dimulai dari 1 yang mengiterasi 10 kali.
Di dalam for loop, atur properti Transparency ke variabel kontrol dibagi 10.
Panggil fungsi task.wait() dengan waktu 0.1.
local platform = script.Parentlocal function fade()for count = 1, 10 doplatform.Transparency = count / 10task.wait(0.1)endendplatform.Touched:Connect(fade)
Ketika loop berjalan, 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 melaluinya. Platform juga harus muncul kembali beberapa detik setelah memudar - jika tidak, pengguna tidak akan pernah mendapatkan kesempatan untuk mencoba melompat lagi jika mereka gagal. Properti CanCollide mengontrol apakah pengguna dapat jatuh melalui sebuah bagian.
Atur properti CanCollide dari platform menjadi false setelah for loop.
Tunggu beberapa detik menggunakan fungsi task.wait().
Atur properti CanCollide kembali menjadi true.
Atur properti Transparency kembali menjadi 0.
local platform = script.Parentlocal function fade()for count = 1, 10 doplatform.Transparency = count / 10task.wait(0.1)endplatform.CanCollide = falsetask.wait(3)platform.CanCollide = trueplatform.Transparency = 0endplatform.Touched:Connect(fade)
Variabel Debounce
Dalam Lava Mematikan, Anda telah belajar bahwa event Touched dijalankan setiap kali bagian tubuh pengguna bersentuhan dengan bagian tersebut. Perilaku ini menyebabkan masalah ketika seorang pengguna berlari melintasi platform yang memudar: fungsi akan dijalankan beberapa kali, mereset loop setiap kali.
Agar kode berfungsi dengan baik, fungsi hanya boleh dijalankan sekali ketika pengguna menyentuh platform untuk pertama kalinya. Memastikan bahwa sebuah aksi hanya dipicu sekali ketika seharusnya dipicu beberapa kali dikenal sebagai debouncing.
Untuk mendebounce sebuah fungsi, sebuah 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 ke 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 tubuh 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 not Luau membalikkan nilai dari apa pun 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
endToggel 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.
- Atur isTouched menjadi true di dalam pernyataan if, sebelum platform mulai memudar.
- 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 di mana 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)