Eğer/sonra tuzaklarla pratik yap

*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.

Oyuncuların sağlığını azaltan tuzaklar, koşullu ifadelerle kodlanabilen eğlenceli bir oyun öğesidir.Dokununca oyuncunun sağlığını sıfıra ayaran bir parça oluşturarak koşulları uygulayın.

Tuzak kuruldu

Tuzaklar, hareket tabanlı zorluklarla ilgili deneyimlerde istisnai derecede iyi çalışır, örneğin obby'ler.Bu adımlar gerekli değişkenleri ve işlevleri ayarlayarak başlayacaktır.Önce kod kutularına bakmadan mümkün olduğunca fazla yapın.

  1. Bir tuzak parçası oluştur ve adlandır. Parçaya bir senaryo ekleyin.

  2. Senaryoda açıklayıcı bir yorum ekleyin ve ardından senaryonun ebeveynini referans olarak kullanmak için bir değişken kullanın.


    -- Bir oyuncu bu parçaya dokunursa, sağlığını 0'a ayarlayın
    local trapPart = script.Parent
  3. Bir parametreyle adlandırılan onTouch() fonksiyonu oluşturun, adı otherPart olan bir parametre ile.


    -- Bir oyuncu bu parçaya dokunursa, sağlığını 0'a ayarlayın
    local trapPart = script.Parent
    local function onTouch(otherPart)
    end
  4. İşlevi, parçaya herhangi bir şey dokunduğunda çalıştırmak için tuzağın Touched etkinliğine bağlayın.


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

Oyuncu dokunuşunu kontrol et

Hatırla, parametre otherPart herhangi bir tuzak parçasına dokunan her şeyi kaydeder, ki bu bir oyuncunun veya sadece temel plakanın bir parçası olabilir.

Tuzak yalnızca oyuncuları yok edecek ve rastgele dekoratif öğeleri yok edecek olmadığından emin olmak için, otherPart içinde ne varsa kontrol etmek için bir if/then ifadesi kullanın, bir Humanoid nesnesi içeriyor mu.

Belirli bir nesneyi bul

İşlev FindFirstChildWhichIsA() belirli nesne türlerini aramak için kullanılabilir, ki bu yararlı çünkü bir Humanoid türü nesne arıyoruz.Oyuncular muhtemelen avatarlarının sadece bir kısmıyla tuzağa dokunacaklar, bu yüzden dokunan parçanın ebeveynini bulmak ve bir Humanoid'i aramak için bir değişken kurulmalıdır.

  1. In onTouch() , type local character = otherPart.Parent .


    local trapPart = script.Parent
    local function onTouch(otherPart)
    -- DiğerParçacığın ebeveyn nesnesini bulur
    local character = otherPart.Parent
    end
    trapPart.Touched:Connect(onTouch)
  2. Kontrol etmek için character 'nin bir Humanoid 'ye sahip olup olmadığını yazın:

    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)

Bir if ifadesi ile kontrol et

Bir Humanoid bulunursa, Humanoid'in sağlığını sıfıra ayarlayın.

  1. Bir Humanoid'in başarıyla local humanoid 'ye atandığını kontrol etmek için bir if ifadesi kullanın.


    local trapPart = script.Parent
    local function onTouch(otherPart)
    local character = otherPart.Parent
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")
    -- Bir Humanoid bulunduğunu değerlendirir
    if humanoid then
    end
    end
    trapPart.Touched:Connect(onTouch)
  2. Bir yazdırma ifadesi ekleyin ve şimdiye kadar kodu kontrol edin.


    local trapPart = script.Parent
    local function onTouch(otherPart)
    local character = otherPart.Parent
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")
    -- Bir Humanoid bulunduğunu değerlendirir
    if humanoid then
    print("Found a Humanoid")
    end
    end
    trapPart.Touched:Connect(onTouch)
  3. Kodu çalıştırın ve bir oyuncu parçaya dokunduğunda çıktıyı görebileceğinizi kontrol edin.

oyuncusağlığını değiştir

Eğer ifade doğruysa, oyuncunun sağlığını 0'a ayarlamak için aynı insansız varyantı kullanabilirsiniz.

  1. Arasında then ve end arasında, humanoid.Health = 0 yazın.

    Tamamlanmış senaryo

    local trapPart = script.Parent
    local function onTouch(otherPart)
    local character = otherPart.Parent
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")
    -- Bir Humanoid bulunduğunu değerlendirir
    if humanoid then
    print("Found a Humanoid")
    humanoid.Health = 0
    end
    end
    trapPart.Touched:Connect(onTouch)
  2. Tuzak test edin.

Özet

Bu tuzak parçası koşulları kullanarak Humanoid parçalarını tespit etti ve Humanoid'in sağlığını sıfıra ayarlandı.Bu senaryo, ne olursa olsun dokunan herhangi bir nesneyi yok eden önceki tuzağın kodunu geliştirir.

Ancak hala birkaç kusuru var.Humanoidler sadece oyuncuların içinde değildir.Humanoidler ayrıca oynanabilir olmayan karakterlerde de bulunur.Senaryo ayrıca sadece oyuncunun sağlığını sıfıra ayarlamak için iyidir.Küçük bir sağlık miktarını çıkararak deney yapabilirsiniz, ancak sağlığı istenenden daha hızlı çıkarması muhtemeldir.Daha sonraki dersler, oyunculara ne kadar sağlık çıkarılabileceği konusunda daha fazla kontrol vermek için daha fazla geliştirme sağlar.