Di Lava Mematikan, Anda belajar bagaimana untuk menyalakan kode berdasarkan perilaku pengguna.Tutorial ini menunjukkan cara membuat platform yang memudar saat pengguna menginjaknya.
Membuat
Jika Anda mengikuti Lava Mematikan, Anda dapat menempatkan platform pudar Anda di atas lantai lava yang tidak dapat dilompati oleh pengguna.
Sisipkan bagian dan pindahkan ke tempat di duniamu. Namakan itu FadingPlatform .
Ubah ukurannya sehingga pengguna dapat melompat di atasnya.
Pastikan itu Terikat .
Sisipkan Skrip ke dalam bagian, ganti namanya menjadi FadeOnTouch , dan hapus kode default.
Buat variabel untuk platform dan fungsi kosong yang terhubung ke acara platform Touched .
local platform = script.Parentlocal function fade()endplatform.Touched:Connect(fade)
Hilangkan platform
Memiliki van platform menghilang dalam sekejap tidak akan menyenangkan sama sekali karena pengguna akan menemukan tidak mungkin untuk menyeberangi celah.Sebagai gantinya, platform harus memudar sebelum pengguna jatuh melaluinya untuk memberi mereka kesempatan untuk mati.
Anda bisa mengubah properti Transparency dan menunggu waktu yang sangat singkat lagi dan lagi untuk mendapatkan efek ini, tetapi perubahan bertahap akan memerlukan setidaknya 10 perubahan antara 0 dan 1.Itu 20 baris kode yang sangat berulang.
Ini dapat dicapai dengan lebih efektif menggunakan loop untuk yang mengulang kode dengan jumlah tertentu.Setiap loop dari kode dikenal sebagai iterasi **** .Lingkaran A didefinisikan dengan tiga hal, dipisahkan oleh koma:
- Variabel kontrol - Variabel yang dibuat dan digunakan untuk menghitung loop. Dalam contoh ini, itu count dan nilai awal adalah 1.
- Nilai akhir - Nilai yang harus diperoleh untuk loop berhenti. Dalam contoh ini, itu adalah 10.
- Peningkatan langkah (opsional) - Menentukan apa yang harus ditambahkan ke variabel kontrol setiap loop.Jika ditinggalkan, itu default ke 1, jadi dalam contoh ini tidak diperlukan.
Di dalam FadeOnTouch :
Dalam fungsi, buat loop for yang dimulai dari 1 yang diulang 10 kali.
Di dalam loop for, atur properti Transparency ke variabel kontrol dibagi oleh 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, hitungan meningkat sebesar 1 dengan setiap iterasi.Ini berarti bahwa platform Transparency akan meningkat sebesar 0,1 setiap 0,1 detik, mencapai transparansi penuh setelah 1 detik.
Muncul Kembali
Setelah platform menghilang, pengguna harus jatuh melalui itu.Platform juga harus kembali beberapa detik setelah memudar - jika tidak, pengguna tidak akan pernah mencoba melompat lagi jika mereka gagal.Properti CanCollide mengontrol apakah pengguna dapat jatuh melalui bagian.
Tetapkan properti CanCollide dari platform ke false setelah loop for.
Tunggu beberapa detik menggunakan fungsi task.wait().
Atur properti CanCollide kembali ke true.
Atur properti Transparency kembali ke 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 penundaan debounce
Di Lava Mematikan , Anda belajar bahwa acara Touched berjalan setiap kali bagian tubuh pengguna berhubungan dengan bagian.Perilaku ini menyebabkan masalah ketika pengguna berjalan melintasi platform yang memudar: fungsi akan dijalankan beberapa kali, mengatur ulang loop setiap kali.
Untuk kode berfungsi dengan benar, fungsi hanya harus dijalankan sekali ketika pengguna menyentuh platform untuk pertama kalinya.Memastikan bahwa tindakan hanya dipicu sekali ketika sebaliknya akan dipicu beberapa kali dikenal sebagai debouncing .
Untuk mengurangi fungsi, variabel boolean dapat digunakan untuk melacak kapan platform sudah disentuh.Booleans hanya dapat berisi benar dan salah nilai.Buat 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
Sebuah pernyataan if dapat digunakan untuk menjalankan kode hanya di fungsi fade jika variabel debouncing isTouched palsu.Bungkus tubuh fungsi fade dalam sebuah 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 mengbalikkan nilai apa pun yang mengikutinya.Dalam ketentuankondisional, ini berarti bahwa pernyataan pertama jika berperilaku sama dengan pernyataan yang mengikuti.
if not isTouched thenendif isTouched == false thenendif isTouched == nil thenend
Aktifkan penundaan debounce
Saat ini, kode dalam fungsi fade akan selalu dijalankan karena isTouched palsu dan not isTouched mengevaluasi ke benar.Untuk menyelesaikan rutinitas debounce, Anda perlu menyalakan nilai variabel di dua tempat.
- Atur isTouched ke true di dalam pernyataan if sebelum platform mulai memudar.
- Atur ulang 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 dia! Tes kode Anda sekarang, dan Anda harus menemukan bahwa platform memudar saat pengguna melompat di atasnya dan kembali beberapa detik kemudian.
Anda dapat mengulangi platform ini melintasi celah yang lebih luas untuk menciptakan hambatan menantang dan mengubah kecepatan di mana mereka memudar untuk menyeimbangkan kesulitan.
Kode kode
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)