Bu proje, for döngülerinin pratik bir şekilde nasıl kullanılabileceğine dair bir başka örnektir. Bu köprüde, oyuncular bir düğmeye dokunarak köprüyü sınırlı bir süre boyunca yürünebilir hale getirecek ve ardından kaybolacaktır. Bir zamanlayıcı oluşturmak ve kalan süreyi bir oyuncuya göstermek için for döngülerini kullanacaksınız.
Projeyi ayarlama
Bu köprü, bir obby gibi hareket tabanlı zorluklar içeren herhangi bir Roblox projesine dahil edilebilir.
Parçaları oluşturma
Bir köprü inşa etmek için bir yer bulun, örneğin bir nehir veya bir obby'deki büyük bir boşluk. Aşağıdaki gibi üç ankrajlı parça oluşturun.
- TimerDisplay
- Bridge
- ButtonBridge

Pasif durumda, köprü yarı saydam olacaktır. Bunu yapmak için, Bridge'i seçin ve özelliklerini değiştirin.
- Transparency = 0.8
- CanCollide = False
Zamanlayıcı görüntüsünü oluşturma
Köprüden geçerken, oyuncular köprünün kaybolmadan önce ne kadar süre kaldığını görmelidir. Görüntüleri veya metinleri göstermek için bir parçaya Surface GUI adı verilen bir nesne ekleyebilirsiniz. Surface GUIs, oyun içi tabelalar, özel sağlık çubukları ve envanter sistemleri oluşturmak için de kullanılabilir. Bu eğitimde bu konuya hızlıca değinilecektir, ancak daha fazla bilgi Eğitimler bölümünde bulunabilir.
TimerDisplay'i seçin ve bir SurfaceGui ekleyin. Ardından, Surface Gui'ya bir TextLabel ekleyin.

Surface GUI'yi seçin. Özellikler bölümünde aşağıdaki değişiklikleri yapın:
- Face'i değiştirin, böylece oyuncunun baktığı yerde zamanlayıcının önünde metin etiketi gözükecektir.
TextLabel'i seçin. Özellikler bölümünde aşağıdaki değişiklikleri yapın:
- Size'ı {1, 0},{1, 0} olarak ayarlayın.
- TextScaled'i true olarak ayarlayın.
- Text'i boş bırakın. Metin, script ile güncellenecektir.
Script'i ayarlama
Zamanlayıcı yerinde olduğuna göre, köprüyü kontrol edecek ve oyunculara geri sayım numarasını gösterecek bir script oluşturun.
Bridge parçasında, TimedBridge adında yeni bir script ekleyin. O scriptte aşağıdaki değişkenleri oluşturun.
local bridge = script.Parentlocal button = workspace.ButtonBridgelocal timerText = workspace.TimerDisplay.SurfaceGui.TextLabel-- Köprünün ne kadar süre sağlam kalacağılocal timerDuration = 5
Dokunma etkileşimini kodlama
Köprüyü kullanmak için iki fonksiyon oluşturmanız gerekecek. Bir fonksiyon köprüyü yürünebilir hale getirecek ve zamanlayıcıyı gösterecek. Diğer fonksiyon, köprüyü etkinleştiren düğmeye bir oyuncunun dokunup dokunmadığını dinleyecek.
İçinde bir print ifadesi bulunan startTimer() adında yeni bir fonksiyon oluşturun. Print ifadesini kodunuzu test etmek için kullanacaksınız.
local timerDuration = 5local function startTimer()print("Geri sayım başladı")endBir humanoid'in düğmeye dokunup dokunmadığını kontrol etmek için buttonPressed() adında bir fonksiyon kodlayın. Fonksiyon, partTouched adında bir parametre almalı ve o parçanın içinde bir humanoid tespit edilirse boş bir if ifadesi içermelidir.
local function startTimer()print("Geri sayım başladı")endlocal function buttonPressed(partTouched)local character = partTouched.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")if humanoid thenendendZamanlayıcıyı başlatmak için, if ifadesinin içinde startTimer() fonksiyonunu çağırın.
local function buttonPressed(otherPart)local character = otherPart.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")if humanoid thenstartTimer()endendbuttonPressed()'in sonuna, buttonPressed() fonksiyonunu düğmenin Touched olayına bağlayın.
local function buttonPressed(otherPart)local character = otherPart.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")if humanoid thenstartTimer()endendbutton.Touched:Connect(buttonPressed)Projeyi çalıştırın. Parçaya dokunun ve Output penceresinde print ifadesini kontrol edin.
Sorun giderme ipuçları
Bu noktada, köprü beklenildiği gibi çalışmıyorsa, aşağıdakilerden birini deneyin.
Sorun: "... workspace'in geçerli bir üyesi değil" hatası.
- TimedBridge scriptinde, tüm parçaların Explorer'da görüldüğü gibi tam olarak yazıldığını kontrol edin.
Sorun: Parçaları göremiyorum.
- Tüm üç parçanın Ankrajlı olduğundan emin olun.
- Köprünün Transparency özelliğini kontrol edin.
Zamanlayıcıyı oluşturma
Oyuncular köprüye adım attıklarında, startTimer() köprüyü 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üşecektir.
Köprüyü yürünebilir hale getirme
Başlamak için, script köprüyü sağlam hale getirmeli veya çarpışabilir hale getirmeli ve ardından yürünemez hale gelene kadar bir zamanlayıcı başlatmalıdır.
Köprüyü yürünebilir hale getirmek için, startTimer() içinde köprünün Transparency özelliğini 0 (opak) ve CanCollide özelliğini true olarak değiştirin.
local function startTimer()-- Köprüyü görünür ve yürünebilir hale getirbridge.Transparency = 0bridge.CanCollide = trueendGeri sayım yapan bir zamanlayıcı oluşturmak için aşağıdaki değerlerle bir for döngüsü oluşturun.
- Kontrol Değişkeni: count adında, timerDuration olarak ayarlayın.
- Son: 0
- Artış: -1
local function startTimer()-- Köprüyü görünür ve yürünebilir hale getirbridge.Transparency = 0bridge.CanCollide = truefor count = timerDuration, 0, -1 doendendZamanlayıcıyı oyunculara göstermek için, timerText içindeki metni count olarak değiştirmek için timerText.Text = count yazın. Her döngü geçişinde, oyunculara zamanlayıcının bir sonraki numarasını gösterecektir.
for count = timerDuration, 0, -1 dotimerText.Text = countendFor döngüsünün yalnızca her saniyede bir çalışmasını sağlamak için bir task.wait fonksiyonu kullanın.
for count = timerDuration, 0, -1 dotimerText.Text = counttask.wait(1)endOyunu çalıştırın. Düğmeye dokunduğunuzda, köprü görünmeli ve zamanlayıcı başlamalı, ardından tamamlanmalıdır.
Köprünün yeniden başlamasını engelleme
Ancak, düğmede hareket ederseniz, zamanlayıcı sürekli olarak yeniden başlayacaktır.
Bu, for döngüsünün her seferinde düğmeye dokunduğunuzda çağrılması ve for döngüsünü baştan başlatması nedeniyle olmaktadır. Zamanlayıcının sürekli olarak yeniden başlamasını engellemek için, startTimer()'ın tekrar çağrılıp çağrılmayacağını kontrol edecek bir boolean, bir tür değişken eklemeniz gerekecek.
Booleanlar, diğer değişkenler gibi yazılır, ancak sayılar veya dizeler yerine yalnızca true veya false olarak ayarlanabilirler. Bu durumda, script, zamanlayıcının şu anda çalışıp çalışmadığını kontrol etmek için bir boolean kullanacaktır.
Script'inizin en üstünde, değişkenlerinizin altında, timerActive adında bir değişken oluşturun ve henüz kimse düğmeye basmadığı için false olarak ayarlayın.
local timerDuration = 5local timerActive = falselocal function startTimer()Zamanlayıcının yalnızca timerActive boolean'ı false olduğunda başlamasını sağlamak için, buttonPressed() içindeki if ifadesine ikinci bir koşul ekleyin.
local function buttonPressed(otherPart)local character = otherPart.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")if humanoid and timerActive == false thenstartTimer()endendstartTimer()'ın zamanlayıcı süresi dolmadan tekrar çalışmasını engellemek için, boolean timerActive'ı true olarak ayarlayın.
local function startTimer()timerActive = truebridge.Transparency = 0bridge.CanCollide = truestartTimer() fonksiyonunda, for döngüsünden sonra, köprüyü orijinal özelliklerine geri döndürmek için köprünün saydamlığını 0.8 ve CanCollide'ı false olarak değiştirin.
local function startTimer()timerActive = truebridge.Transparency = 0bridge.CanCollide = true-- timerDuration'dan geri sayan for döngüsüfor count = timerDuration, 0, -1 dotimerText.Text = counttask.wait(1)end-- Köprüyü yürünemez hale getirbridge.Transparency = 0.8bridge.CanCollide = falseendKöprüyü sıfırlamak için son bir şey, timerText'i başlangıçta olduğu gibi boş bir dizeye değiştirmektir. Ardından, timerActive boolean'ını false olarak ayarlayın.
bridge.Transparency = 0.8bridge.CanCollide = falsetimerText.Text = ""timerActive = falseOyun test edin ve köprünün birden fazla kez kullanılabildiğinden emin olun.
Tam zamanlı köprü scripti
local bridge = script.Parent
-- Explorer'da yazıldığı gibi düğmeyi alır
local button = workspace.ButtonBridge
-- Görüntü için parçayı alır
local timerPart = workspace.TimerDisplay
-- Zamanlayıcıyı gösterecek metni alır
local timerText = timerPart.SurfaceGui.TextLabel
-- Oyuncuların köprüyü geçmek için sahip olduğu süre
local timerDuration = 5
local timerActive = false
local function startTimer()
print("Geri sayım başladı")
timerActive = true
bridge.Transparency = 0
bridge.CanCollide = true
-- timerDuration'dan geri sayan for döngüsü
for count = timerDuration, 0, -1 do
timerText.Text = count
task.wait(1)
end
-- Köprüyü yürünemez hale getir
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("parça dokunuldu")
if humanoid and timerActive == false then
print("zamanlayıcı başlatılıyor")
startTimer()
end
end
button.Touched:Connect(buttonPressed)Özet
Döngüler, farklı etkileşim yöntemleriyle birleştirilerek eğlenceli oyun anları yaratabilir. Bu eğitimde, bir geri sayım işlevi gören bir for döngüsü kullanılarak zamanlı bir köprü oluşturulmuştur. Geri sayım sırasında, oyunculara geçmek için sınırlı bir süre verilmektedir.