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.
Bir tuzak parçası oluşturun ve adlandırın. Parçaya bir script ekleyin.
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 yaplocal trapPart = script.ParentonTouch() adında bir fonksiyon oluşturun ve bir otherPart adında parametre ekleyin.
-- Bir oyuncu bu parçaya dokunursa, sağlıklarını 0 yaplocal trapPart = script.Parentlocal function onTouch(otherPart)endFonksiyonu, bir şey parçaya dokunduğunda çalışacak şekilde tuzak parçasının Touched olayına bağlayın.
local trapPart = script.Parentlocal function onTouch(otherPart)endtrapPart.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.
onTouch() içinde local character = otherPart.Parent yazın.
local trapPart = script.Parentlocal function onTouch(otherPart)-- otherPart'ın ebeveyn nesnesini bulurlocal character = otherPart.ParentendtrapPart.Touched:Connect(onTouch)character'ın bir Humanoid olup olmadığını kontrol etmek için:
local humanoid = character:FindFirstChildWhichIsA("Humanoid") yazın.
local trapPart = script.Parentlocal function onTouch(otherPart)local character = otherPart.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")endtrapPart.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.
local humanoid'e başarıyla bir Humanoid atanıp atanmadığını kontrol etmek için bir if ifadesi kullanın.
local trapPart = script.Parentlocal function onTouch(otherPart)local character = otherPart.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")-- Bir Humanoid'in bulunup bulunmadığını değerlendiririf humanoid thenendendtrapPart.Touched:Connect(onTouch)Bir print ifadesi ekleyin ve şu ana kadar kodu kontrol edin.
local trapPart = script.Parentlocal function onTouch(otherPart)local character = otherPart.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")-- Bir Humanoid'in bulunup bulunmadığını değerlendiririf humanoid thenprint("Bir Humanoid bulundu")endendtrapPart.Touched:Connect(onTouch)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.
then ve end arasında humanoid.Health = 0 yazın.
Tamamlanmış scriptlocal trapPart = script.Parentlocal function onTouch(otherPart)local character = otherPart.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")-- Bir Humanoid'in bulunup bulunmadığını değerlendiririf humanoid thenprint("Bir Humanoid bulundu")humanoid.Health = 0endendtrapPart.Touched:Connect(onTouch)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.