Tuzağı kullanarak if/then pratiği

*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 unsuru. Koşullu ifadeleri kullanarak, dokunulduğunda oyuncunun sağlığını sıfıra indiren bir parça oluşturun.

Tuzağı kurun

Tuzaklar, obby gibi hareket tabanlı zorluklar içeren oyunlarda son derece iyi çalışır. Bu adımlar, gerekli değişkenleri ve fonksiyonları ayarlamaya başlayacak. Önce kod kutularına bakmadan yapabildiğiniz kadarını yapın.

  1. Bir tuzak parçası oluşturun ve adlandırın. Parçaya bir script ekleyin.

  2. Script içinde, açıklayıcı bir yorum ekleyin ve ardından script'in ebeveynini referans almak için bir değişken kullanın.

    -- Bir oyuncu bu parçaya dokunursa, sağlıklarını 0 yap
    local trapPart = script.Parent
  3. onTouch() adında bir fonksiyon oluşturun ve bir otherPart adında parametre ekleyin.

    -- Bir oyuncu bu parçaya dokunursa, sağlıklarını 0 yap
    local trapPart = script.Parent
    local function onTouch(otherPart)
    end
  4. Fonksiyonu, bir şey parçaya dokunduğunda çalışacak şekilde tuzak parçasının Touched olayına bağlayın.

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

Oyuncu dokunuşunu kontrol et

Unutmayın, otherPart parametresi, tuzak parçasına dokunan her şeyi kaydeder; bu, bir oyuncunun parçası veya sadece zemin olabilir.

Tuzakların yalnızca oyuncuları yok etmesini sağlamak ve rastgele dekor öğelerini yok etmemesi için, otherPart içinde bir Humanoid nesnesi olup olmadığını kontrol etmek için bir if/then ifadesi kullanın.

Belirli bir nesneyi bulun

FindFirstChildWhichIsA() fonksiyonu, belirli nesne türlerini aramak için kullanılabilir; bu, Humanoid türü bir nesne aradığımız için kullanışlıdır. Oyuncular muhtemelen tuzağa yalnızca avatarlarının bir parçasıyla dokunacakları için, dokunan parçanın ebeveynini bulmak ve onu bir Humanoid için aramak üzere bir değişken ayarlanmalıdır.

  1. onTouch() içinde local character = otherPart.Parent yazın.

    local trapPart = script.Parent
    local function onTouch(otherPart)
    -- otherPart'ın ebeveyn nesnesini bulur
    local character = otherPart.Parent
    end
    trapPart.Touched:Connect(onTouch)
  2. character'ın bir Humanoid olup olmadığını kontrol etmek için:

    local humanoid = character:FindFirstChildWhichIsA("Humanoid") yazın.

    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

Eğer bir Humanoid bulunursa, o zaman Humanoid'in Sağlığını sıfıra ayarlayın.

  1. local humanoid'e başarıyla bir Humanoid atanıp atanmadığı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'in bulunup bulunmadığını değerlendirir
    if humanoid then
    end
    end
    trapPart.Touched:Connect(onTouch)
  2. Bir print ifadesi ekleyin ve şu ana kadar kodu kontrol edin.

    local trapPart = script.Parent
    local function onTouch(otherPart)
    local character = otherPart.Parent
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")
    -- Bir Humanoid'in bulunup bulunmadığını değerlendirir
    if humanoid then
    print("Bir Humanoid bulundu")
    end
    end
    trapPart.Touched:Connect(onTouch)
  3. Kodu çalıştırın ve bir oyuncu parçaya dokunduğunda çıktıyı görebildiğinizden emin olun.

Oyuncunun sağlığını değiştirin

Eğer ifade doğruysa, oyuncunun sağlığını 0'a ayarlamak için aynı humanoid değişkenini kullanabilirsiniz.

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

    Tamamlanmış script
    local trapPart = script.Parent
    local function onTouch(otherPart)
    local character = otherPart.Parent
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")
    -- Bir Humanoid'in bulunup bulunmadığını değerlendirir
    if humanoid then
    print("Bir Humanoid bulundu")
    humanoid.Health = 0
    end
    end
    trapPart.Touched:Connect(onTouch)
  2. Tuzak test edin.

Özet

Bu tuzak parçası, Humanoid parçaları tespit etmek ve Humanoid'in sağlığını sıfıra ayarlamak için koşullu ifadeleri kullandı. Bu script, dokunan nesneyi ne olursa olsun yok eden önceki tuzak script'inin bir iyileştirmesidir.

Ancak, hala birkaç kusuru var. Humanoidler yalnızca oyuncularda değil, aynı zamanda oynanabilir olmayan karakterlerde de bulunur. Script, yalnızca oyuncunun sağlığını sıfıra ayarlamakta iyidir. Küçük bir sağlık miktarını çıkarmayı denemek isteyebilirsiniz, ancak muhtemelen istenenden daha hızlı sağlık çıkaracaktır. Daha sonraki dersler, oyunculardan ne kadar sağlık çıkarılacağı üzerinde daha fazla kontrol sağlamak için daha fazla iyileştirme sunar.

©2026 Roblox Corporation. Roblox, the Roblox logo and Powering Imagination are among our registered and unregistered trademarks in the U.S. and other countries.