Orta seviye öğreticiler

Solma tuzağı

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

In Ölümcül Lav, kullanıcı davranışına dayalı kod tetiklemeyi öğrendiniz. Bu eğitim, bir kullanıcının üzerine bastığında kaybolan bir platform nasıl yapılacağını gösterir.

Kurulum

Eğer Ölümcül Lav eğitimini takip ettiyseniz, kaybolan platformunuzu kullanıcıların geçemeyeceği lav zemininde yerleştirebilirsiniz.

  1. Bir parça ekleyin ve onu dünyanızda uygun bir yere taşıyın. Adını FadingPlatform olarak belirleyin.

  2. Kullanıcının üzerine atlayabileceği şekilde boyutunu ayarlayın.

  3. Anchored olarak ayarladığınızdan emin olun.

  4. Parçanın içine bir Script ekleyin, adını FadeOnTouch olarak değiştirin ve varsayılan kodu kaldırın.

  5. Platform için bir değişken oluşturun ve platformun Touched olayına bağlı boş bir fonksiyon tanımlayın.


    local platform = script.Parent
    local function fade()
    end
    platform.Touched:Connect(fade)

Platformu kaybettirmek

Platformun aniden yok olması hiç eğlenceli olmaz çünkü kullanıcılar boşluğun üzerinden geçebilmekte zorlanır. Bunun yerine, platform kaybolmadan önce kullanıcılara atlama şansı vermek için yok olmalıdır.

Transparency özelliğini değiştirebilir ve bu etkiyi elde etmek için çok kısa bir süre bekleyebilirsiniz, ancak kademeli bir kaybolma en az 0 ile 1 arasında 10 değişiklik gerektirir. Bu 20 satırlık çok tekrarlayıcı bir kod demektir.

Bu, belirli sayıda kodu tekrar eden bir for döngüsü kullanılarak çok daha etkili bir şekilde gerçekleştirilebilir. Kodun her döngüsüne iteration denir. Bir for döngüsü, birbirinden 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, count ve başlangıç değeri 1.
  • Son değer - Döngünün durması için ulaşması gereken değer. Bu örnekte, 10.
  • Adım artırma (isteğe bağlı) - Her döngüde kontrol değişkenine eklenen değeri belirler. Dışarıda bırakılırsa varsayılan olarak 1 olarak ayarlanır, bu nedenle bu örnekte gereksizdir.

FadeOnTouch içinde:

  1. Fonksiyonda, 1'den başlayarak 10 kez yineleyen bir for döngüsü oluşturun.

  2. For döngüsünün içinde, Transparency özelliğini kontrol değişkeni 10'a bölerken ayarlayın.

  3. task.wait() fonksiyonunu 0.1 süreyle çağırın.


    local platform = script.Parent
    local function fade()
    for count = 1, 10 do
    platform.Transparency = count / 10
    task.wait(0.1)
    end
    end
    platform.Touched:Connect(fade)

Döngü çalıştığında, her yinelemede count 1 artar. Bu, platformun Transparency değerinin her 0.1 saniyede 0.1 artacağı ve 1 saniye sonunda tam saydamlığa ulaşacağı anlamına gelir.

Yeniden Belirme

Platform kaybolduktan sonra, kullanıcıların üzerinden düşmesi gerekmektedir. Platformun kaybolduktan birkaç saniye sonra geri gelmesi de gerekir - aksi takdirde, kullanıcılar başarısız olsalar bile atlama şansını bir daha bulamazlar. CanCollide özelliği, kullanıcıların bir parçanın üzerinden düşüp düşemeyeceğini kontrol eder.

  1. CanCollide özelliğini for döngüsünden sonra false olarak ayarlayın.

  2. task.wait() fonksiyonu ile birkaç saniye bekleyin.

  3. CanCollide özelliğini tekrar true olarak ayarlayın.

  4. Transparency özelliğini tekrar 0 olarak ayarlayın.


    local platform = script.Parent
    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)

Debounce Değişkeni

Ölümcül Lav eğitiminde, Touched olayının, bir kullanıcının vücut parçası parçayla temas ettiğinde her seferinde çalıştığını öğrenmiştiniz. Bu davranış, bir kullanıcı kaybolan platformun üzerinden koşarken sorunlar yaratır: Fonksiyon birden fazla kez çalışacak ve döngüyü her seferinde sıfırlayacaktır.

Kodun doğru çalışması için, fonksiyon yalnızca kullanıcının platforma ilk kez temas ettiğinde bir kez çalışmalıdır. Bir eylemin yalnızca bir kez tetiklenmesini sağlamak, debouncing olarak bilinir.

Bir fonksiyonu debouncing yapmak için, platforma daha önce dokunulup dokunulmadığını izlemek için bir boolean değişkeni kullanılabilir. Booleans yalnızca true ve false değerlerini içerebilir. isTouched adında bir değişken oluşturun ve onu false olarak ayarlayın.


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 Etme

Bir if ifadesi, yalnızca isTouched debouncing değişkeni false olduğunda fade fonksiyonu içindeki kodu çalıştırmak için kullanılabilir. Fade fonksiyonunun gövdesini isTouched koşulu ile bir if 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 değeri tersine çevirir. Koşullu terimler açısından bu, ilk if ifadesinin aşağıdaki ifadelerle aynı şekilde davrandığı anlamına gelir.


if not isTouched then
end
if isTouched == false then
end
if isTouched == nil then
end

Debounce'i Değiştirme

Şu anda, fade fonksiyonundaki kod her zaman çalışacaktır çünkü isTouched false'dur ve not isTouched true değerini döndürür. Debounce rutinini tamamlamak için, değişkenin değerini iki yerde değiştirmelisiniz.

  1. if ifadesinin içinde, platform kaybolmaya başlamadan önce isTouchedtrue olarak ayarlayın.
  2. Platform geri geldikten sonra onu tekrar false olarak 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 hepsi bu! Artık kodunuzu test edebilirsiniz ve kullanıcı üzerine sıçradığında platformun kaybolduğunu ve birkaç saniye sonra geri geldiğini görebilirsiniz.

Bu platformu daha geniş bir boşluğa çoğaltarak zorlu bir engel oluşturabilir ve kaybolma hızını değiştirerek zorluğu dengeleyebilirsiniz.

Son 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)
©2026 Roblox Corporation. Roblox, the Roblox logo and Powering Imagination are among our registered and unregistered trademarks in the U.S. and other countries.