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 dikode dengan pernyataan kondisional. Berlatih menggunakan kondisi dengan membuat bagian yang menetapkan kesehatan pemain setara saat disentuh.

Mengatur Perangkap

Perangkap bekerja dengan sangat baik dalam pengalaman dengan tantangan berbasis gerakan, seperti obby. Langkah-langkah ini akan dimulai dengan menetapkan variabel dan fungsi yang diperlukan. Lakukan sebanyak mungkin tanpa melihat kotak kode terlebih dahulu.

  1. Buat dan nama bagian perangkap. Sisipkan skrip ke bagian.

  2. Dalam script, tambahkan komentar deskriptif dan kemudian gunakan variabel untuk mengacu pada orang tua script.


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


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


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

Memeriksa untuk Player Touch

Ingat, parameter otherPart menyimpan apa pun yang menyentuh bagian perangkap, yang mungkin menjadi bagian dari pemain atau hanya papan dasar.

Untuk menjamin bahwa perangkap hanya akan menghancurkan pemain dan tidak akan menghancurkan item dekor acak, gunakan pernyataan if/then untuk memeriksa apakah apa pun di otherPart berisi objek Humanoid.

Menemukan Objek Tertentu

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

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


    local trapPart = script.Parent
    local function onTouch(otherPart)
    -- Menemukan objek orang tua
    local character = otherPart.Parent
    end
    trapPart.Touched:Connect(onTouch)
  2. Periksa 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)

Memeriksa dengan if Statement

Jika Humanoid ditemukan, maka tetapkan Kesehatan Humanoid menjadi nol.

  1. Gunakan if statement untuk memeriksa apakah Humanoid diberikan dengan sukses ke local humanoid .


    local trapPart = script.Parent
    local function onTouch(otherPart)
    local character = otherPart.Parent
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")
    -- Mengevaluasi apakah ditemukan Humanoid
    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 ditemukan Humanoid
    if humanoid then
    print("Found a Humanoid")
    end
    end
    trapPart.Touched:Connect(onTouch)
  3. Jalankan kode dan periksa bahwa Anda dapat melihat hasilnya setiap kali seorang pemain menyentuh bagian.

Mengubah Kesehatan Pemain

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

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

    Skrip yang selesai

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

Sintesis

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

Ini masih memiliki beberapa kekurangan. Humanoid tidak hanya dalam pemain. Humanoid juga ditemukan dalam karakter non-playable. Skrip ini juga hanya bagus untuk menetapkan kesehatan pemain menjadi nol. Anda dapat bereksperimen dengan mengurangkan sedikit kesehatan, tetapi kemungkinan akan menurunkan kesehatan lebih cepat dari yang diinginkan. Pelaj