Dalam Pengantar untuk scripting, Anda belajar bagaimana membuat perubahan dalam pengalaman dalam sebuah loop seiring waktu. Bagaimana jika Anda ingin membuat perubahan berdasarkan perilaku pengguna? Dalam tutorial ini, Anda akan belajar bagaimana membuat lantai lava mematikan yang membunuh pengguna saat mereka menginjaknya.
Persiapan
Anda membutuhkan tempat di dunia Anda untuk menempatkan lava mematikan. Jika Anda mengikuti kursus Pengantar untuk scripting, lantai lava akan cocok dengan celah yang ditutupi oleh platform yang menghilang.
Sisipkan sebuah Part dan gerakkan ke tempat di dunia Anda. Namai LavaFloor.
Ubah ukurannya sehingga menutupi lantai ruang yang mengelilinginya.

Buat lantai terlihat lebih seperti lava dengan mengatur properti Material menjadi Neon dan Color menjadi nuansa oranye.


Sisipkan sebuah Script ke dalam bagian LavaFloor dan ganti namanya menjadi Kill.

Hapus kode default dan buat sebuah variabel untuk lava.
local lava = script.Parent
Menghubungkan ke sebuah event
Gunakan event untuk mendeteksi kapan seorang pengguna menyentuh lava. Setiap bagian memiliki event Touched yang dipicu ketika sesuatu menyentuhnya. Anda dapat menghubungkan ke event ini untuk menjalankan sebuah fungsi ketika event tersebut dipicu.
Deklarasikan sebuah fungsi baru yang disebut kill.
Akses event Touched pada objek lava menggunakan titik, seperti properti: lava.Touched.
Panggil fungsi Connect pada event Touched, yang meneruskan kill() sebagai fungsi yang akan dipanggil ketika bagian tersebut tersentuh.
local lava = script.Parentlocal function kill()endlava.Touched:Connect(kill)
Kode apa pun yang Anda tulis di dalam fungsi kill sekarang akan dijalankan setiap kali sesuatu menyentuh lava. Perhatikan bahwa sebuah titik dua digunakan untuk fungsi Connect, bukan titik - jangan khawatir tentang alasannya saat ini, cukup ingat saja perbedaannya.
Mendapatkan bagian yang menyentuh
Untuk membunuh pengguna, fungsi akan membutuhkan objek yang terkait dengan pengguna tersebut. Event Touched dari sebuah bagian dapat memberikan "bagian lain" yang menyentuhnya — tetapi hanya jika Anda memintanya dengan menjadikannya sebagai parameter fungsi.
Parameter adalah definisi dari apa yang diharapkan fungsi untuk diterima ketika dipanggil. Sebuah parameter dapat digunakan dalam fungsi seperti variabel lainnya. Anda dapat mengirim informasi ke parameter dengan menyertakannya dalam tanda kurung ketika fungsi dipanggil. Parameter didefinisikan dalam tanda kurung di baris pertama suatu fungsi. Buat sebuah parameter yang disebut otherPart untuk fungsi kill.
local lava = script.Parent
local function kill(otherPart)
end
lava.Touched:Connect(kill)
Ketika fungsi kill dipanggil, parameter otherPart akan mewakili bagian yang menyentuh lantai lava, dan kode yang akan Anda tulis dalam fungsi tersebut akan dapat menggunakannya.
Karakter dan humanoid
Ketika seorang pengguna menyentuh lava, Roblox dapat mendeteksi bagian tubuh spesifik dari pengguna yang menyentuhnya, seperti kaki kiri atau kaki kanan. Bagian ini ada dalam model Karakter pengguna, yang berisi semua objek yang membentuk avatar pengguna dalam pengalaman, termasuk:
- Bagian tubuh individu pengguna seperti kepala, anggota tubuh, dan tubuh.
- Pakaian dan aksesori yang dikenakan oleh pengguna.
- Humanoid, sebuah objek khusus yang berisi banyak properti terkait pengguna, termasuk kesehatan pengguna.
- Bagian HumanoidRootPart yang mengontrol gerakan pengguna.
Seperti yang telah disebutkan sebelumnya, setiap bagian tubuh yang menyentuh lava adalah bagian dari model Karakter, jadi Anda dapat mendapatkan referensi ke karakter tersebut dengan otherPart.Parent. Buat sebuah variabel untuk menyimpan orang tua dari bagian yang menyentuh lantai lava.
local lava = script.Parent
local function kill(otherPart)
local partParent = otherPart.Parent
end
lava.Touched:Connect(kill)
Dari model karakter, Anda perlu mendapatkan objek Humanoid untuk membunuh pengguna. Anda dapat melakukan ini dengan fungsi FindFirstChild()—cukup serahkan nama dari apa yang Anda cari dan fungsi ini menyediakan anak pertama yang cocok yang ditemukan dalam objek tersebut. Panggil FindFirstChild() pada variabel partParent dengan "Humanoid" sebagai anak yang dicari, dan simpan hasilnya dalam variabel baru yang disebut humanoid.
local lava = script.Parent
local function kill(otherPart)
local partParent = otherPart.Parent
local humanoid = partParent:FindFirstChild("Humanoid")
end
lava.Touched:Connect(kill)
Memeriksa humanoid
Anda dapat dengan mudah memeriksa apakah Humanoid ditemukan dengan menggunakan sebuah if statement. Kode dalam statement if hanya akan dijalankan jika kondisi yang didefinisikan di baris pertama adalah benar.
Ada berbagai operator yang dapat digunakan untuk membangun kondisi yang lebih kompleks yang akan Anda temui di kursus-kursus mendatang - untuk saat ini, cukup letakkan variabel humanoid di sana. Buat sebuah if statement dengan humanoid sebagai kondisi.
local lava = script.Parent
local function kill(otherPart)
local partParent = otherPart.Parent
local humanoid = partParent:FindFirstChild("Humanoid")
if humanoid then
end
end
lava.Touched:Connect(kill)
Mengatur kesehatan karakter
Sekarang setelah Humanoid telah diperiksa, propertinya dapat diubah. Jika Anda mengatur properti Health menjadi 0, Karakter yang terkait mati. Dalam tubuh statement if, atur properti Health dari humanoid menjadi 0.
local function kill(otherPart)
local partParent = otherPart.Parent
local humanoid = partParent:FindFirstChild("Humanoid")
if humanoid then
humanoid.Health = 0
end
end
lava.Touched:Connect(kill)
Dengan itu, lantai lava Anda sudah lengkap! Uji pengalaman Anda dan Anda seharusnya menemukan bahwa lava mematikan Anda berhasil membunuh pengguna saat kontak. Cobalah menggunakan lava Anda sebagai tantangan tambahan dalam obby, atau sebagai batas untuk sebuah dunia.
Kode akhir
local lava = script.Parent
local function kill(otherPart)
local partParent = otherPart.Parent
local humanoid = partParent:FindFirstChild("Humanoid")
if humanoid then
humanoid.Health = 0
end
end
lava.Touched:Connect(kill)