In Ölümcül Lav , kullanıcı davranışına dayalı kodu nasıl tetikleyeceğinizi öğrendiniz. Bu öğretici, bir kullanıcının üzerine adım attığında solgunan bir platformu nasıl yapacağınızı gösterir.
Yükleme
Ölümcül Lav adını takip ettiysen, kaybolan platformunu kullanıcıların atlayabileceği lav zemininin üzerine yerleştirebilirsin.
Bir parçayı dünyanıza yerleştirin ve adını verin FadingPlatform .
Bir kullanıcının atlayabileceği boyutta yeniden boyutlandırın.
Eğer bir Kurulmuş ise emin olun.
Bir Script kısmına girin, onu FadeOnTouch olarak yeniden adlandırın ve varsayılan kodu kaldırın.
Platform için bir değişken oluştur ve platformun Touched etkinliğine bağlı boş bir işlevi.
local platform = script.Parentlocal function fade()endplatform.Touched:Connect(fade)
Platformu solgun
Platform anında kaybolmak, kullanıcıların platformu geçmek için imkansız olduğunu bulması nedeniyle eğlenceli olmazdı. Bunun yerine, platform gitmiş olmalıdır önce kullanıcılar platformu geçmek için fırsatı vermek için zıpla.
Bu etkiyi elde etmek için Transparency özelliğini değiştirebilir ve tekrar tekrar çok kısa sürelerde bu etkiyi elde edebilirsiniz, ancak bir yükseltici kaydırma gerektirir en az 10 değişiklik arasında 0 ve 1 arasında. Bu 20 satır kodunuz.
Bu, kodu belirli bir sayıda kez tekrarlayan bir for döngüsü kullanarak çok daha etkili bir şekilde elde edilebilir. Kodun her döngüsü bir iterasyon olarak bilinir. Bir döngü için üç şey vardır, boşluklarla ayrılmış olarak:
- Kontrol değişkeni - Oluşturulan ve döngüleri saymak için kullanılan değişken. Bu örnekte, değişken count ve başlangıç değeri 1'dir.
- End value - Loop'un durması için alması gereken değer. Bu örnekte, 10'dır.
- Adım artışı (isteğe bağlı) - Kontrol değişkenine her tur eklemek için gerekeni belirler. Eğer ayrılırsa, varsayılan olarak 1'tir, bu nedenle bu örnekte gereksizdir.
In FadeOnTouch :
İşlevde, for bir 1 ile başlayan 10 반복luğunu oluşturur.
For döngüsünün içinde, Transparency özelliğini 10 ile bölmek için kontrol değişkenine ayarlarınızı ayarlayın.
Call the task.wait() function with a time of 0.1 .
local platform = script.Parentlocal function fade()for count = 1, 10 doplatform.Transparency = count / 10task.wait(0.1)endendplatform.Touched:Connect(fade)
Köpekbalığının döngüsü koştuğunda, her itibar artışı 1 artar. Bu, platformun Transparency 'ın her 0.1 saniyede bir artacağını ve bir saniyeden sonra tüm şeffaflığa ulaşacağını ifade eder.
Yeniden Ortaya Çıkma
Platform kaybolduktan sonra, kullanıcılar platformun üzerinde düşmelidir. Platform ayrıca kaybolduktan sonra birkaç saniye içinde geri dönecektir - aksi takdirde, kullanıcılar zıplamayı tekrar denemeyeceklerdir. CanCollide özelliği, kullanıcıların bir parçaya düşmesine izin verir - böylece kaybolduktan sonra bile kullanıcılar zıplamayı deneyebilir.
Platformun CanCollide özelliğini for döngüsünden sonra false olarak ayarla.
Birkaç saniye için task.wait() işlevini bekleyin.
CanCollide özelliğini true değerine geri ayarla.
Transparency özelliğini 0 'e geri ayarla.
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)
Değişkenyi Yeniden Oynat
Ölümcül Lavada öğrendiğiniz şey, Touched etkinliğinin her kullanıcının vücut bölümünün parçaya temas ettiğinde çalıştığınızı öğrendiniz. Bu davranış, kullanıcının kaybolan platform aracılığıyla geçiş yaparken sorun yaratıyor: işlev birden fazla tekrarlanır ve her seferinde döngüyü sıf
Kodun işlemesi için, kullanıcı ilk kez platforma dokunduğunda sadece bir kez işlev çalıştırılmalıdır. Aksi takdirde, eylemin birden fazla kez başlatılmasının önlenmesi işlemine düşük adı verilir.
Bir işlevi geri almak için, bir boole 변수 kullanılabilir, böylece platformun zaten dokunulduğunda izlemek için. Booleanlar sadece doğru ve yanlış değerleri içerebilir. Oluştur bir 2> isTouched2> 변수 ve bunu 5> force
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
Bir if statement can be used to only run the code in the fade function if the isTouched debouncing variable is false. Wrap the body of the fade function in an if statement with the condition not isTouched .
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)
Lua not operatörü, takip eden değerleri değiştirir. Kondisyonlara bağlı olarak, bu, ilk ifadenin takip edenlerle aynı davranmasını sağlar.
if not isTouched thenendif isTouched == false thenendif isTouched == nil thenend
Debounce'ı Geç/Kaydet
Şu anda, fade işlevindeki kod her zaman çalışacak, çünkü isTouched yanlış ve not isTouched değerlendirme gerçekleştirilecek. Debounce rutinesini tamamlamak için, değişkenin değerini iki yerde değiştirmeniz gerekir.
- Platformun solgunmaya başlamadan önce isTouched ifadesinin içine true ayarını if ayarlayın.
- Platform tekrar göründüğünde false olarak yeniden 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 test edin ve platformun kullanıcı tarafından atladığında solgunup birkaç saniye sonra geri geldiğini görmelisiniz.
Bu platformu geniş bir boşlukta kopyalayarak meydan okuma bir engel oluşturabilir ve zorluk dengelenmesi için hızı değiştirebilirsiniz.
Nihai Kod
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)