In Ölümcül Lav , kullanıcı davranışına dayalı kod nasıl tetikleneceğini öğrendiniz.Bu eğitim, bir kullanıcı üzerinde adım attığında kaybolan bir platform nasıl oluşturulacağını gösterir.
Kurulum
Ölümcül Lavaya uyduysanız, kaybolan platformunuzu kullanıcıların atlayamayacağı lav zemininin üzerine yerleştirebilirsiniz.
Bir parça ekleyin ve dünyanızdaki yere yerleştirin. Adlandırın FadingPlatform .
Bir kullanıcının üzerine atlayabilmesi için yeniden boyutlandırın.
Bunun Sabitlenmiş olduğundan emin olun.
Parçaya bir Kodu ekleyin, adını FadeOnTouch olarak değiştirin ve varsayılan kodu kaldırın.
Platform için bir değişken ve platformun Touched etkinliğine bağlı boş bir işlev oluşturun.
local platform = script.Parentlocal function fade()endplatform.Touched:Connect(fade)
platformkayboltur
Platformun bir anda kaybolması, kullanıcıların boşluğu aşmasının imkansız olduğunu bulması nedeniyle hiç eğlenceli olmayacaktır.Bunun yerine, platform kullanıcılar bunun üzerinden atlayabilmeleri için önce kaybolmalı dır.
Transparency özelliğini değiştirebilir ve bu etkiyi elde etmek için çok kısa bir süre tekrar tekrar beklemeniz gerekebilir, ancak giderek azalan bir geçiş en az 0 ile 1 arasında 10 değişiklik gerektirecektir.Bu çok tekrarlayan kodun 20 satırı.
Bunun çok daha etkili bir şekilde başarılması için bir for döngüsü kullanılarak kod belirli bir sayıda kez tekrarlanır.Kodun her döngüsü bir iterasyon olarak bilinir.Döngü için bir A, virgüllerle ayrılmış üç şeyle tanımlanır:
- Kontrol değişkeni - Döngüleri saymak için oluşturulan ve kullanılan değişken. Bu örnekte, bu count ve başlangıç değeri 1'dir.
- Son değer - Döngünün durması için alması gereken değer. Bu örnekte, 10'dur.
- Adım artışı (isteğe bağlı) - Her döngüye kontrol değişkenine ne eklemek gerektiğini belirler.Bırakılırsa, varsayılan 1'e döner, bu nedenle bu örnekte gereksizdir.
In Dokununca kaybolur :
Fonksiyon içinde, for döngüsünü oluştur ve 1 döngüsünden başlayarak 10 kez tekrarlayın.
for döngüsünün içinde, Transparency özelliğini kontrol değişkenine 10 tarafından bölünmüş olarak ayarlayın.
task.wait() fonksiyonunu bir süre ile çağırın 0.1 .
local platform = script.Parentlocal function fade()for count = 1, 10 doplatform.Transparency = count / 10task.wait(0.1)endendplatform.Touched:Connect(fade)
Döngü çalıştığında, her döngü ile birlikte sayı artar 1.Bu, platformun Transparency 'sinin her 0.1 saniye içinde 0.1 artacağı ve 1 saniye sonra tüm transparansiyi elde edeceği anlamına gelir.
Yeniden Ortaya Çık
Platform kaybolduktan sonra, kullanıcılar onun içinden geçmelidir.Platform ayrıldıktan birkaç saniye sonra geri dönmelidir - aksi takdirde, kullanıcılar asla tekrar atlamaya çalışmazlarsa başarısız olurlar.CanCollide özelliği, kullanıcıların bir parçadan düşebileceklerini kontrol eder.
Platformun CanCollide özelliğini for döngüsünden sonra false olarak ayarlayın.
task.wait() fonksiyonunu kullanarak birkaç saniye bekleyin.
CanCollide özelliğini true 'ye geri ayarlayın.
Transparency özelliğini 0 'ye geri ayarlayın.
local platform = script.Parentlocal function fade()for count = 1, 10 doplatform.Transparency = count / 10task.wait(0.1)endplatform.CanCollide = falsetask.wait(3)platform.CanCollide = trueplatform.Transparency = 0endplatform.Touched:Connect(fade)
Debounce değişkeni
In Ölümcül Lav , bir kullanıcının vücut parçası herhangi bir parçayla temasa geldiğinde her seferinde Touched etkinliğinin çalıştığını öğrendiniz.Bu davranış, bir kullanıcı puslu platformdan geçerken sorunlara neden olur: işlev birçok kez çalışacak ve her seferinde döngüyü sıfırlayacak.
Kod doğru çalışması için, kullanıcı ilk kez platforma dokunduğunda sadece bir kez fonksiyon çalışmalıdır.Bir eylemin başka bir şekilde birden fazla kez tetiklenmesi durumunda sadece bir kez tetiklenmesini sağlamak gecikme olarak bilinir.
Bir işlevi debounce etmek için, platformun zaten dokunduğu zamanı izlemek için bir booleen değişkeni kullanılabilir.Booleans sadece doğru ve yanlış değerler içerebilir.isTouched adlı bir değişken oluştur ve onu false olarak ayarla.
local platform = script.Parent
local isTouched = false
local function fade()
for count = 1, 10 do
platform.Transparency = count / 10
task.wait(0.1)
end
platform.CanCollide = false
task.wait(3)
platform.CanCollide = true
platform.Transparency = 0
end
platform.Touched:Connect(fade)
Değişkeni kontrol et
Bir if ifadesi, isTouched debounce değişkeni yoksa sadece kodu yalnızca fade işlevinde çalıştırmak için kullanılabilir.Kaybolma işlevinin vücudunu if koşulu ile bir not isTouched ifadesine sarın.
local platform = script.Parent
local isTouched = false
local function fade()
if not isTouched then
for count = 1, 10 do
platform.Transparency = count / 10
task.wait(0.1)
end
platform.CanCollide = false
task.wait(3)
platform.CanCollide = true
platform.Transparency = 0
end
end
platform.Touched:Connect(fade)
Luau not operatörü, ardından gelen her şeyin değerini tersine çevirir.Koşullu koşullar, bu, ilk if ifadesinin takip etgelen ifadelerle aynı davrandığını ifade eder.
if not isTouched thenendif isTouched == false thenendif isTouched == nil thenend
Debounce'u değiştir
Şu anda, fade fonksiyonundaki kod daima çalışacak çünkü isTouched yanlış ve not isTouched doğru olarak değerlendirilecek.Debounce rutinini tamamlamak için, değişkenin değerini iki yerde değiştirmeniz gerekecek.
- Platform solgunlaşmaya başlamadan önce ifadesinin içine koyun, platform başladıktan sonra ayarlarını değiştirin.
- Platform yeniden ortaya çıktıktan sonra bunu false bir kez geri ayarlayın.
local function fade()
if not isTouched then
isTouched = true
for count = 1, 10 do
platform.Transparency = count / 10
task.wait(0.1)
end
platform.CanCollide = false
task.wait(3)
platform.CanCollide = true
platform.Transparency = 0
isTouched = false
end
end
platform.Touched:Connect(fade)
Ve işte bu! Kodunuzu şimdi test edin ve kullanıcı platforma atladığında ve birkaç saniye sonra geri döndüğünde platformun kaybolduğunu bulmalısınız.
Bu platformu daha geniş bir boşluğa yayarak zor bir engel oluşturabilir ve zorluğu dengelemek için hızı değiştirebilirsiniz.
Final kodu
local platform = script.Parent
local isTouched = false
local function fade()
if not isTouched then
isTouched = true
for count = 1, 10 do
platform.Transparency = count / 10
task.wait(0.1)
end
platform.CanCollide = false
task.wait(3)
platform.CanCollide = true
platform.Transparency = 0
isTouched = false
end
end
platform.Touched:Connect(fade)