Perangkap yang mengurangi kesehatan pemain adalah elemen permainan yang menyenangkan dan dapat diprogram menggunakan pernyataan bersyarat. Latih penggunaan kondisional dengan membuat sebuah bagian yang mengatur kesehatan pemain menjadi nol saat disentuh.
Siapkan perangkap
Perangkap bekerja dengan sangat baik dalam pengalaman dengan tantangan berbasis gerakan, seperti obby. Langkah-langkah ini akan dimulai dengan mengatur variabel dan fungsi yang diperlukan. Lakukan sebanyak mungkin tanpa melihat kotak kode terlebih dahulu.
Buat dan beri nama bagian perangkap. Masukkan skrip ke dalam bagian tersebut.
Dalam skrip, tambahkan komentar deskriptif dan kemudian gunakan variabel untuk merujuk ke induk skrip.
-- Jika seorang pemain menyentuh bagian ini, atur kesehatan mereka menjadi 0local trapPart = script.ParentBuat fungsi bernama onTouch() dengan parameter bernama otherPart.
-- Jika seorang pemain menyentuh bagian ini, atur kesehatan mereka menjadi 0local trapPart = script.Parentlocal function onTouch(otherPart)endHubungkan fungsi tersebut ke peristiwa Touched bagian perangkap agar berjalan setiap kali sesuatu menyentuh bagian tersebut.
local trapPart = script.Parentlocal function onTouch(otherPart)endtrapPart.Touched:Connect(onTouch)
Periksa sentuhan pemain
Ingat, parameter otherPart mencatat apa pun yang menyentuh bagian perangkap, yang mungkin merupakan bagian dari pemain atau hanya baseplate.
Untuk memastikan perangkap hanya akan menghancurkan pemain dan tidak menghancurkan objek dekorasi acak, gunakan pernyataan if/then untuk memeriksa apakah apa pun yang ada di otherPart mengandung objek Humanoid.
Temukan objek tertentu
Fungsi FindFirstChildWhichIsA() dapat digunakan untuk mencari tipe objek tertentu, yang sangat berguna karena kita mencari objek tipe Humanoid. Pemain kemungkinan hanya akan menyentuh perangkap dengan sebagian dari avatar mereka, jadi variabel harus diatur untuk menemukan induk dari bagian yang menyentuh dan mencarinya untuk Humanoid.
Di onTouch(), ketik local character = otherPart.Parent.
local trapPart = script.Parentlocal function onTouch(otherPart)-- Menemukan objek induk dari otherPartlocal character = otherPart.ParentendtrapPart.Touched:Connect(onTouch)Periksa untuk melihat apakah character memiliki Humanoid dengan mengetik:
local humanoid = character:FindFirstChildWhichIsA("Humanoid")
local trapPart = script.Parentlocal function onTouch(otherPart)local character = otherPart.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")endtrapPart.Touched:Connect(onTouch)
Periksa dengan pernyataan if
Jika sebuah Humanoid ditemukan, maka atur kesehatan Humanoid menjadi nol.
Gunakan pernyataan if untuk memeriksa apakah sebuah Humanoid berhasil ditugaskan ke local humanoid.
local trapPart = script.Parentlocal function onTouch(otherPart)local character = otherPart.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")-- Mengevaluasi apakah sebuah Humanoid ditemukanif humanoid thenendendtrapPart.Touched:Connect(onTouch)Tambahkan pernyataan cetak dan periksa kode sejauh ini.
local trapPart = script.Parentlocal function onTouch(otherPart)local character = otherPart.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")-- Mengevaluasi apakah sebuah Humanoid ditemukanif humanoid thenprint("Menemukan sebuah Humanoid")endendtrapPart.Touched:Connect(onTouch)Jalankan kode dan periksa bahwa Anda dapat melihat output setiap kali seorang pemain menyentuh bagian tersebut.
Ubah kesehatan pemain
Jika pernyataan tersebut benar, Anda dapat menggunakan variabel humanoid yang sama untuk mengatur kesehatan pemain menjadi 0.
Di antara then dan end, ketik humanoid.Health = 0.
Skrip selesailocal trapPart = script.Parentlocal function onTouch(otherPart)local character = otherPart.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")-- Mengevaluasi apakah sebuah Humanoid ditemukanif humanoid thenprint("Menemukan sebuah Humanoid")humanoid.Health = 0endendtrapPart.Touched:Connect(onTouch)Uji perangkapnya.
Ringkasan
Bagian perangkap ini menggunakan kondisional untuk mendeteksi bagian Humanoid dan mengatur kesehatan Humanoid menjadi nol. Skrip ini adalah peningkatan dari skrip perangkap sebelumnya, yang menghancurkan objek yang menyentuh tanpa peduli apa itu.
Namun, ini masih memiliki beberapa kekurangan. Humanoid tidak hanya ada pada pemain. Humanoid juga ditemukan pada karakter non-playable. Skrip ini juga hanya baik untuk mengatur kesehatan pemain menjadi nol. Anda dapat bereksperimen dengan mengurangi jumlah kecil kesehatan, tetapi kemungkinan besar akan mengurangi kesehatan lebih cepat dari yang diinginkan. Pelajaran selanjutnya memberikan perbaikan lebih lanjut untuk memberikan kontrol yang lebih besar atas seberapa banyak kesehatan yang dikurangi dari pemain.