Dalam Pengantar ke Skrip, Anda belajar cara membuat perubahan dalam pengalaman dalam satu waktu berulang. Bagaimana jika Anda ingin membuat perubahan berdasarkan perilaku pengguna? Dalam tutorial ini, Anda akan belajar cara membuat lantai lava yang mematikan pengguna saat mereka menginjaknya.
Mengatur
Anda memerlukan tempat di dunia Anda untuk menempatkan lava yang mematikan. Jika Anda mengikuti kursus Pengantar ke Skrip, lantai lava akan tepat berada dalam celah yang ditutupi oleh platform yang menghilang.
Sisipkan Part dan letakkan di tempatnya di dunia Anda. Beri nama LavaFloor .
Ubah ukurannya sehingga menutupi lantai ruang penutup.
Buat lantai tampak lebih seperti lava dengan menetapkan properti Material menjadi Neon dan Color ke warna oranye.
Sisipkan Skrip ke bagian LavaFloor dan ganti nama menjadi Kill.
Hapus kode default dan buat variabel untuk lava.
local lava = script.Parent
Mengikuti acara
Gunakan acara untuk mendeteksi kapan seorang pengguna menyentuh lava. Setiap bagian memiliki acara Touched yang diaktifkan ketika sesuatu menyentuhnya. Anda dapat menghubungkan ke acara ini untuk mengeksekusi fungsi saat itu terjadi.
Deklarasikan fungsi baru bernama kill .
Akses acara Touched di objek lava menggunakan dot, seperti property: lava.Touched .
Panggil fungsi Connect di acara Touched, menyebutkan fungsi kill.
local lava = script.Parentlocal function kill()endlava.Touched:Connect(kill)
Setiap kode yang Anda tulis dalam fungsi kill sekarang akan berjalan setiap kali sesuatu menyentuh lava. Catat bahwa kolom adalah digunakan untuk fungsi Connect, dan 1> bukan dot - jangan khawatir tentang mengapa pada saat ini, coba ingat perbedaannya.
Mendapatkan Bagian yang Menyentuh
Untuk membunuh pengguna, fungsi akan memerlukan objek yang terkait dengan pengguna itu. Acara bagian Touched dapat menyediakan "bagian lain" yang menyentuhnya — tetapi hanya jika Anda meminta itu dengan membuatnya menjadi parameter fungsi.
Parameter adalah definisi apa yang diharapkan fungsi untuk diterima ketika fungsi itu dipanggil. Sebuah parameter dapat digunakan dalam fungsi sama seperti setiap variabel lainnya. Anda dapat menyampaikan informasi ke parameter dengan menyertakannya dalam parentheses ketika fungsi dipanggil. Para parameter didefinis dalam parentheses di baris pertama fungsi.
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 akan dapat digunakannya.
Karakter dan Humanoid
Ketika seorang pengguna menyentuh lava, Roblox dapat mendeteksi bagian tubuh khusus pengguna yang menyentuhnya, seperti kaki kiri atau kaki kanan. Bagian ini adalah dalam model Karakter pengguna, yang mengandung semua objek yang membuat avatar pengguna dalam pengalaman, termasuk:
- Bagian tubuh individu pengguna seperti kepala, anggota, dan torso.
- Pakaian dan aksesori yang dikenakan oleh pengguna.
- The Humanoid, objek khusus yang berisi banyak proporsi terkait pengguna, termasuk kesehatan pengguna.
- The HumanoidRootPart yang mengontrol gerakan pengguna.
Seperti yang disebutkan sebelumnya, setiap bagian tubuh yang menyentuh lava adalah bagian dari model Karakter, jadi Anda dapat mendapatkan referensi ke karakter itu dengan otherPart.Parent . Buat variabel untuk menyimpan 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 akan perlu mendapatkan objek Humanoid untuk membunuh pengguna. Anda dapat melakukan ini dengan fungsi FindFirstChild() — cukup berikan nama item yang Anda cari dan itu memberikan anak pertama yang cocok
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 menggunakan pernyataan jika . Kode dalam pernyataan if hanya akan berjalan jika kondisi yang ditentukan dalam baris pertama benar.
Ada berbagai operator yang dapat digunakan untuk membangun kondisi yang lebih kompleks yang akan Anda temui di kursus masa depan - untuk saat ini, cukup letakkan variabel humanoid di sana. Buat pernyataan jika dengan 1>humanoid1> 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, proporsinya dapat diubah. Jika Anda menetapkan proporsinya Health ke 0, karakter yang terkait mati. Dalam tubuh if statement, tetapkan proporsi 2>Health2> proporsi humanoid ke 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 selesai! Tester pengalaman Anda dan Anda harus menemukan bahwa lava Anda membunuh pengguna dengan sukses saat kontak. Coba gunakan lava Anda sebagai tantangan tambahan di obby, atau sebagai batas dunia.
Kode Terakhir
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)