Solan tuzak

*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 Lava, kullanıcı davranışına dayalı kodu tetiklemeyi öğrendiniz. Bu eğitim, bir kullanıcının üzerine bastığında kaybolan bir platform yapmayı gösterir.

Kurulum

Eğer Ölümcül Lava eğitimini takip ettiyseniz, kaybolan platformunuzu kullanıcıların atlayamayacağı lav zemin üzerinde yerleştirebilirsiniz.

  1. Bir parça ekleyin ve onu dünyanızda yerine yerleştirin. Adını FadingPlatform olarak belirleyin.

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

  3. Anchored olduğundan emin olun.

  4. Parçaya 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 oluşturun.

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

Platformu kaybettirin

Platformun aniden kaybolması hiç eğlenceli olmaz çünkü kullanıcılar boşluğun üzerinden geçmekte zorlanır. Bunun yerine, platform kaybolmadan önce kullanıcıların üzerinden atlaması için bir şans vermelidir.

Transparency özelliğini değiştirip çok kısa bir süre bekleyerek bu etkiyi elde edebilirsiniz, 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 bir sayıda kodu tekrarlayan 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ü, virgülle 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'dir.
  • Son değer - Döngünün durması için ulaşması gereken değer. Bu örnekte, 10'dur.
  • Adım artışı
    OPTIONAL
    - Her döngüde kontrol değişkenine eklenecek değeri belirler. Eğer bırakılırsa, varsayılan olarak 1'dir, 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şkeninin 10'a bölünmesiyle ayarlayın.

  3. task.wait() fonksiyonunu 0.1 süresi ile ç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 bir 0.1 artacağı ve 1 saniye sonra tam şeffaflığa ulaşacağı anlamına gelir.

Yeniden belirme

Platform kaybolduktan sonra, kullanıcılar onun üzerinden düşmelidir. Platform kaybolduktan birkaç saniye sonra geri gelmelidir - aksi takdirde, kullanıcılar başarısız olursa atlamayı bir daha deneme şansına sahip olamazlar. CanCollide özelliği, kullanıcıların bir parçanın üzerinden düşüp düşemeyeceğini kontrol eder.

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

  2. task.wait() fonksiyonunu kullanarak 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 Lava eğitiminde, Touched olayının her seferinde bir kullanıcının vücut parçası parçayla temas ettiğinde çalıştığını öğrendiniz. Bu davranış, bir kullanıcının kaybolan platformun üzerinden koşarken sorunlara neden olur: fonksiyon birden fazla kez çalışacak ve her seferinde döngüyü sıfırlayacaktır.

Kodun düzgün çalışması için, fonksiyonun yalnızca kullanıcı platforma ilk kez dokunduğunda bir kez çalışması gerekir. Bir eylemin yalnızca bir kez tetiklenmesini sağlamak, debouncing olarak bilinir.

Bir fonksiyonu debounce etmek için, platformun zaten dokunulup dokunulmadığını takip etmek 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 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 et

Bir if ifadesi, yalnızca isTouched debouncing değişkeni false olduğunda fade fonksiyonundaki kodu çalıştırmak için kullanılabilir. Fade fonksiyonunun gövdesini if ifadesi ile not isTouched koşuluyla 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ğerin tersini alır. Koşullu terimlerde, bu, ilk if ifadesinin, takip eden ifadelerle aynı şekilde davrandığı anlamına gelir.

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

Debounce'i geçiştirme

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

  1. isTouched değerini, platform kaybolmadan önce if ifadesinin içinde true olarak ayarlayın.
  2. Platform yeniden belirdikten sonra 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 kadar! Şimdi kodunuzu test edin ve kullanıcının üzerine zıpladığında platformun kaybolduğunu ve birkaç saniye sonra geri geldiğini görmelisiniz.

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

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