Döngü uygulaması - zamanlı bir köprü oluştur

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

Bu proje, pratik bir şekilde döngüler için kullanımın bir başka örneğidir.Bu köprü için, oyuncular bir düğmeye dokunacak ve kaybolmadan önce sınırlı bir süre için bir köprü yürünebilir hale getirecek.Bir zamanlayıcı oluşturmak ve oyuncuya kalan süreyi göstermek için döngüleri kullanacaksınız.

Projeyi kurun

Bu köprü, bir obby gibi hareket tabanlı zorluklarla herhangi bir oyun projesine dahil edilebilir.

Parçalar oluştur

  1. Bir köprü inşa etmek için bir yer bul, örneğin bir nehir veya bir obby'de büyük bir boşluk gibi. Aşağıdaki üç sabitlenmiş parça oluştur.

    • ZamanlayıcıGörüntüsü
    • Köprü
    • Buton Köprüsü
  2. aktif değil, köprü yarı saydam olacaktır. Bunu yapmak için Köprü seçin ve özelliklerini değiştirin.

    • Şeffaflık = 0.8
    • CanCollide = Yanlış

Saat görüntüsünü oluştur

Köprüyü geçerken, oyuncuların köprü kaybolmadan önce kaç saniye kaldığını görmeleri gerekecek.Görüntüleri veya metni görüntülemenin bir yolu, bir parçaya Surface GUI adlı bir nesne ekleyerek yapılır. Yüzey GUI'leri ayrıca oyun içi işaretler, özel sağlık çubukları ve envanter sistemleri oluşturmak için kullanılabilir.Bu eğitim bunu hızlıca geçecek, ancak daha fazla bilgi Eğitimler bölümünde bulunabilir.

  1. ZamanlayıcıGörüntüsü'nü seçin ve bir Yüzey Gui ekleyin. Ardından, Yüzey Gui'ye ebeveyn olun ve bir MetinEtiketi ekleyin.

  2. Yüzey GUI'sini seçin. Özelliklerde aşağıdaki değişiklikleri yapın:

    • Oyuncunun baktığı timer'ın önündeki metin etiketini görebilmek için Yüzü değiştirin.
  3. Metin Etiketi'ni seçin. Özelliklerde aşağıdaki değişiklikleri yapın:

    • Boyutu {1, 0},{1, 0}.
    • TextScaled 'yi gerçeğe ayarlayın.
    • Boş olması için Metin ayarını yapın. Metin, senaryo kullanılarak güncellenir.

Senaryoyu kurun

Artık zamanlayıcı yerinde olduğuna göre, köprüyü kontrol etmek ve oyunculara geri sayım sayısını göstermek için bir senaryo oluşturun.

  1. Köprü bölümünde, TimedBridge adlı yeni bir senaryo ekleyin. Bu senaryoda, aşağıdaki değişkenleri oluşturun.


    local bridge = script.Parent
    local button = workspace.ButtonBridge
    local timerText = workspace.TimerDisplay.SurfaceGui.TextLabel
    -- Köprü ne kadar süre dayanıklı kalacak
    local timerDuration = 5

Dokunma etkileşimini kodlayın

Köprüyü kullanmak için, iki işlev oluşturmanız gerekecek.Bir işlev köprüyü yürünebilir hale getirip zamanlayıcıyı gösterir.Diğer işlev, bir oyuncu köprüyü etkinleştiren düğmeye dokunduğunda dinleyecektir.

  1. İçinde bir yazdırma ifadesi bulunan yeni bir işlev oluştur startTimer() . kodtest etmek için yazdırma ifadesini kullanacaksınız.


    local timerDuration = 5
    local function startTimer()
    print("Countdown started")
    end
  2. Bir insansızın düğmeye dokunduğunu kontrol etmek için buttonPressed() adlı bir işlev kodlayın.İşlev bir partTouched parametresini kabul etmeli ve ardından bu bölümde bir insansız varsa boş bir if ifadesine sahip olmalıdır.


    local function startTimer()
    print("Countdown started")
    end
    local function buttonPressed(partTouched)
    local character = partTouched.Parent
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")
    if humanoid then
    end
    end
  3. Zamanlayıcıyı başlatmak için, if ifadesinde, startTimer() fonksiyonunu çağırın.


    local function buttonPressed(otherPart)
    local character = otherPart.Parent
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")
    if humanoid then
    startTimer()
    end
    end
  4. buttonPressed() sonundan itibaren, buttonPressed() fonksiyonunu düğmenin Touched etkinliğine bağlayın.


    local function buttonPressed(otherPart)
    local character = otherPart.Parent
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")
    if humanoid then
    startTimer()
    end
    end
    button.Touched:Connect(buttonPressed)
  5. Projeyi çalıştırın. Parçaya dokunun ve baskı ifadesini görmek için Çıktı penceresine göz atın.

Sorun giderme ipuçları

Bu noktada, köprü niyet edilen şekilde çalışmıyorsa, aşağıdakilerden birini deneyin. Sorun : Hata mesajı şöyle diyor: "... is not a valid member of workspace" .

  • TimedBridge senaryosunda, tüm parçaların Explorer'da görüldüğü gibi aynı şekilde yazılıp yazılmadığını kontrol edin. Sorun : Parçaları göremiyorum.

  • Üç parçanın sabit olduğundan emin olun.

  • Köprü için Transparency özelliğini kontrol edin.

Zamanlayıcıyı oluştur

Oyuncular köprüye adım attığında, startTimer() köprü yürünebilir hale getirecek ve zamanlayıcıyı başlatacaktır.Zamanlayıcı 0'a ulaştığında, köprü yürünemez hale gelecek ve yeterince hızlı olmayan herkes düşme.

Köprüyü yürünebilir hale getir

Başlamak için, senaryo köprüyü sağlam veya çarpışabilir hale getirmeli ve ardından yürünebilir olana kadar bir zamanlayıcı başlatmalıdır.

  1. Köprüyü yürünebilir hale getirmek için, startTimer() , köprünün Geçirgenlik özelliğini 0 (opak) ve CanCollide özelliğini doğru olarak değiştirin.


    local function startTimer()
    -- Köprüyü görünür ve yürünebilir hale getir
    bridge.Transparency = 0
    bridge.CanCollide = true
    end
  2. Geri sayım yapan bir zamanlayıcı oluşturmak için, aşağıdaki değerlerle bir döngü oluşturun.

    • Kontrol Değişkeni : adlandırıldı count , timerDuration olarak ayarlandı .
    • Sonu : 0
    • Artış : -1

    local function startTimer()
    -- Köprüyü görünür ve yürünebilir hale getir
    bridge.Transparency = 0
    bridge.CanCollide = true
    for count = timerDuration, 0, -1 do
    end
    end
  3. Zamanlayıcıyı oyunculara göstermek için, timerText ı yazıp sayı görüntülemek için timerText.Text = count 'yi değiştirin.Döngü her seferinde bir döngüden geçerken, oyunculara sayacıdaki bir sonraki sayıyı gösterecektir.


    for count = timerDuration, 0, -1 do
    timerText.Text = count
    end
  4. Bir görev.bekleme işlevini kullanarak sadece bir saniye içinde döngü çalışmasını yapın.


    for count = timerDuration, 0, -1 do
    timerText.Text = count
    task.wait(1)
    end
  5. oyunçal. Düğmeye dokunduğunda, köprü görünmeli ve zamanlayıcı başlatbitmelidir.

Köprünün yeniden başlatılmasını engelle

Dikkat edin, düğme etrafında hareket ederseniz, zamanlayıcı yeniden başlatılacaktır.

Bunun nedeni, düğmeye dokunduğunuz her seferinde for döngüsü çağrılıyor ve başından beri for döngüsü başlatılıyor.Saatin sürekli yeniden başlatılmasını engellemek için, startTimer() tekrar çağrılmasına izin verilip verilmediğini kontrol edecek bir tür değişken eklemelisiniz: boolean. Booleans diğer değişkenlerle aynı şekilde yazılır, ancak sayıları veya dizeyi kullanmak yerine, sadece doğru veya yanlış olarak ayarlanabilir.Bu durumda, senaryo, zamanlayıcının şu anda başlatılmadan önce çalışıp çalışmadığını kontrol etmek için bir boolean kullanacaktır.

  1. Senaryonuzun üstünde, değişkenlerinizin altında, timerActive adlı bir değişken oluşturun ve henüz kimse düğmeye basmadığı için onu false olarak ayarlayın.


    local timerDuration = 5
    local timerActive = false
    local function startTimer()
  2. Zamanlayıcının sadece timerActive booleen false olduğunda başladığından emin olmak için, if ifadesine ikinci bir koşul ekleyin .


    local function buttonPressed(otherPart)
    local character = otherPart.Parent
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")
    if humanoid and timerActive == false then
    startTimer()
    end
    end
  3. Zamanlayıcı tükenmeden önce startTimer() yeniden çalışmasını durdurmak için, boolean timerActive 'yi doğruya ayarlayın.


    local function startTimer()
    timerActive = true
    bridge.Transparency = 0
    bridge.CanCollide = true
  4. startTimer() işlevinde, sonra for döngüsünden sonra, köprünün transparansını 0.8'e ve CanCollide'yi false'a değiştirerek köprüyü orijinal özelliklerine geri ayarlayın.


    local function startTimer()
    timerActive = true
    bridge.Transparency = 0
    bridge.CanCollide = true
    -- Zamanlayıcı Süresinden sayma döngüsü için
    for count = timerDuration, 0, -1 do
    timerText.Text = count
    task.wait(1)
    end
    -- Köprüyü yürünebilir hale getirme
    bridge.Transparency = 0.8
    bridge.CanCollide = false
    end
  5. Köprüyü sıfırlamak için son şey, orijinal olarak olduğu gibi boş bir dizeye timerText değiştirmektir.Sonra, timerActive boolean'i yalan olarak ayarlayın.


    bridge.Transparency = 0.8
    bridge.CanCollide = false
    timerText.Text = ""
    timerActive = false
  6. Köprünün çok kez kullanılabileceğinden emin olmak için oynatma testi ve kontrol yapın.

Zamanlanmış köprü senaryosunu tamamla


local bridge = script.Parent
-- Butonu, Gezginde yazıldığı gibi alır
local button = workspace.ButtonBridge
-- Görüntü için parçayı alır
local timerPart = workspace.TimerDisplay
-- Zamanlayıcıyı gösteren metni alır
local timerText = timerPart.SurfaceGui.TextLabel
-- Oyuncular köprüyü ne kadar süre geçmeli
local timerDuration = 5
local timerActive = false
local function startTimer()
print("Countdown started")
timerActive = true
bridge.Transparency = 0
bridge.CanCollide = true
-- Zamanlayıcı Süresinden sayma döngüsü için
for count = timerDuration, 0, -1 do
timerText.Text = count
task.wait(1)
end
-- Köprüyü yürünebilir hale getirme
bridge.Transparency = 0.8
bridge.CanCollide = false
timerText.Text = ""
timerActive = false
end
local function buttonPressed(partTouched)
local character = partTouched.Parent
local humanoid = character:FindFirstChildWhichIsA("Humanoid")
print("part touched")
if humanoid and timerActive == false then
print("starting timer")
startTimer()
end
end
button.Touched:Connect(buttonPressed)

Özet

Döngüler, eğlenceli oyun anları yaratmak için farklı etkileşim yollarıyla birleştirilebilir.Bu eğitimde, geri sayım işlevi gören bir for döngüsü kullanılarak zamanlı bir köprü oluşturulur.Geri sayım sırasında, oyuncuların geçmesi için sınırlı bir süre verilir.