Jika/maka berlatih dengan perangkap

*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.

Perangkap yang mengurangi kesehatan pemain adalah elemen permainan yang menyenangkan yang dapat dikodekan dengan pernyataan konditional.Berlatih menggunakan kondisional dengan membuat bagian yang menetapkan kesehatan pemain menjadi nol saat disentuh.

Siapkan perangkap

Perangkap bekerja secara luar biasa baik dalam pengalaman dengan tantangan berbasis gerakan, seperti obbies.Langkah-langkah ini akan dimulai dengan mengatur variabel dan fungsi yang diperlukan.Lakukan sebanyak mungkin tanpa melihat kotak kode pertama.

  1. Buat dan beri nama bagian perangkap. Masukkan skrip ke bagian.

  2. Dalam skrip, tambahkan komentar deskriptif dan kemudian gunakan variabel untuk merujuk pada orang tua skrip.


    -- Jika pemain menyentuh bagian ini, atur kesehatan mereka menjadi 0
    local trapPart = script.Parent
  3. Buat fungsi bernama onTouch() dengan parameter bernama otherPart .


    -- Jika pemain menyentuh bagian ini, atur kesehatan mereka menjadi 0
    local trapPart = script.Parent
    local function onTouch(otherPart)
    end
  4. Hubungkan fungsi ke bagian perangkap Touched acara untuk dijalankan setiap kali sesuatu menyentuh bagian.


    local trapPart = script.Parent
    local function onTouch(otherPart)
    end
    trapPart.Touched:Connect(onTouch)

Periksa sentuhan pemain

Ingat, parameter otherPart mencatat apa pun yang menyentuh bagian perangkap, yang mungkin merupakan bagian dari pemain atau hanya piring dasar.

Untuk memastikan perangkap hanya akan menghancurkan pemain dan tidak akan menghancurkan item dekorasi acak, gunakan pernyataan if/then untuk memeriksa apakah apa pun yang ada di otherPart berisi objek Humanoid.

Temukan objek spesifik

Fungsi FindFirstChildWhichIsA() dapat digunakan untuk mencari jenis objek tertentu, yang praktis karena kita mencari objek jenis Humanoid.Pemain kemungkinan akan menyentuh perangkap hanya dengan bagian dari avatar mereka, jadi variabel harus dibuat untuk menemukan orang tua dari bagian yang disentuh dan mencarinya untuk Humanoid.

  1. Di onTouch() , ketik local character = otherPart.Parent .


    local trapPart = script.Parent
    local function onTouch(otherPart)
    -- Menemukan objek orangtua bagian lain
    local character = otherPart.Parent
    end
    trapPart.Touched:Connect(onTouch)
  2. Periksa untuk melihat apakah character memiliki Humanoid dengan mengetik:

    local humanoid = character:FindFirstChildWhichIsA("Humanoid")


    local trapPart = script.Parent
    local function onTouch(otherPart)
    local character = otherPart.Parent
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")
    end
    trapPart.Touched:Connect(onTouch)

Periksa dengan pernyataan if

Jika Humanoid ditemukan, maka atur Kesehatan Humanoid menjadi nol.

  1. Gunakan pernyataan if untuk memeriksa apakah Humanoid berhasil ditugaskan ke local humanoid .


    local trapPart = script.Parent
    local function onTouch(otherPart)
    local character = otherPart.Parent
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")
    -- Mengevaluasi apakah Humanoid ditemukan
    if humanoid then
    end
    end
    trapPart.Touched:Connect(onTouch)
  2. Tambahkan pernyataan cetak dan periksa kode sejauh ini.


    local trapPart = script.Parent
    local function onTouch(otherPart)
    local character = otherPart.Parent
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")
    -- Mengevaluasi apakah Humanoid ditemukan
    if humanoid then
    print("Found a Humanoid")
    end
    end
    trapPart.Touched:Connect(onTouch)
  3. Jalankan kode dan periksa apakah Anda dapat melihat output setiap kali pemain menyentuh bagian.

Ubah kesehatan pemain

Jika pernyataan itu benar, Anda dapat menggunakan variabel humanoid yang sama untuk mengatur kesehatan pemain menjadi 0.

  1. Antara then dan end, ketik humanoid.Health = 0 .

    Skrip selesai

    local trapPart = script.Parent
    local function onTouch(otherPart)
    local character = otherPart.Parent
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")
    -- Mengevaluasi apakah Humanoid ditemukan
    if humanoid then
    print("Found a Humanoid")
    humanoid.Health = 0
    end
    end
    trapPart.Touched:Connect(onTouch)
  2. Uji perangkap.

Singkatan

Bagian perangkap ini menggunakan kondisi untuk mendeteksi bagian Humanoid dan mengatur kesehatan Humanoid menjadi nol.Skrip ini adalah peningkatan pada skrip perangkap sebelumnya, yang menghancurkan objek sentuh apa pun tidak peduli apa itu.

Namun, masih memiliki beberapa kekurangan.Humanoid tidak hanya ada di pemain.Humanoid juga ditemukan di karakter yang tidak dapat dimainkan.Skrip juga hanya bagus dalam menetapkan kesehatan pemain menjadi nol.Anda dapat bereksperimen dengan mengurangi sedikit kesehatan, tetapi kemungkinan akan mengurangi kesehatan lebih cepat dari yang diinginkan.Pelajaran selanjutnya memberikan peningkatan lebih lanjut untuk memberikan kontrol lebih besar atas berapa banyak kesehatan yang dikurangi dari pemain.