Dalam Pengantar scripting, Anda telah belajar bagaimana membuat perubahan dalam permainan 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.
Siapkan
Anda memerlukan tempat di dunia Anda untuk menempatkan lava mematikan. Jika Anda mengikuti kursus Pengantar scripting, lantai lava akan cocok dengan celah yang ditutupi oleh platform yang menghilang.
Masukkan sebuah Part dan pindahkan ke tempatnya di dunia Anda. Namai LavaFloor.
Ubah ukurannya sehingga menutupi lantai ruang yang mengelilinginya.

Buat lantai terlihat lebih seperti lava dengan mengatur properti Material ke Neon dan Color ke warna oranye.


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

Hapus kode default dan buat variabel untuk lava.
local lava = script.Parent
Hubungkan ke sebuah event
Gunakan sebuah event untuk mendeteksi ketika 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 bernama kill.
Akses event Touched pada objek lava menggunakan titik, sama seperti properti: lava.Touched.
Panggil fungsi Connect pada event Touched, dengan kill() sebagai fungsi yang akan dipanggil ketika bagian tersebut disentuh.
local lava = script.Parentlocal function kill()endlava.Touched:Connect(kill)
Kode apa pun yang Anda tulis 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 mengapa pada titik ini, cukup ingat perbedaannya.
Dapatkan bagian yang menyentuh
Untuk membunuh pengguna, fungsi tersebut memerlukan 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 dari fungsi.
Parameter adalah definisi tentang apa yang diharapkan diterima oleh sebuah fungsi ketika dipanggil. Sebuah parameter dapat digunakan dalam sebuah fungsi seperti variabel lainnya. Anda dapat mengirim informasi ke sebuah parameter dengan menyertakannya dalam tanda kurung ketika sebuah fungsi dipanggil. Parameter didefinisikan dalam tanda kurung pada baris pertama sebuah fungsi. Buat sebuah parameter bernama 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 permainan, termasuk:
- Bagian tubuh individu pengguna seperti kepala, anggota badan, dan torso.
- Pakaian dan aksesori yang dikenakan oleh pengguna.
- Humanoid, sebuah objek khusus yang berisi banyak properti terkait pengguna, termasuk kesehatan pengguna.
- 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 berikan nama dari hal yang Anda cari dan ia akan memberikan 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 bernama humanoid.
local lava = script.Parent
local function kill(otherPart)
local partParent = otherPart.Parent
local humanoid = partParent:FindFirstChild("Humanoid")
end
lava.Touched:Connect(kill)Periksa humanoid
Anda dapat dengan mudah memeriksa apakah Humanoid ditemukan menggunakan sebuah if statement. Kode dalam sebuah if statement hanya akan dijalankan jika kondisi yang didefinisikan dalam baris pertama adalah benar.
Ada berbagai operator yang dapat digunakan untuk membangun kondisi yang lebih kompleks yang akan Anda temui di kursus mendatang - untuk saat ini, cukup letakkan variabel humanoid di sana. Buat sebuah if statement dengan humanoid sebagai kondisinya.
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)Atur kesehatan karakter
Sekarang setelah Humanoid telah diperiksa, propertinya dapat diubah. Jika Anda mengatur properti Health menjadi 0, Karakter yang terkait akan mati. Dalam tubuh if statement, 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 permainan Anda dan Anda seharusnya menemukan bahwa lava mematikan Anda berhasil membunuh pengguna saat bersentuhan. Cobalah menggunakan lava Anda sebagai tantangan tambahan dalam sebuah 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)