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 köprüyü sınırlı bir süre için gezilebilir hale getirmek için bir düğmeye dokunacaklar. Bir timer oluşturmak ve oyuncuya kalan süreyi göstermek için kullanımın döngülerini kullanacaksınız.
Projeyi ayarlama
Bu köprü, bir obby gibi hareket tabanlı zorluklarla herhangi bir oyun projesine dahil edilebilir.
Parçalar Oluşturuluyor
Bir köprü oluşturmak için bir yer bulun, bir nehir veya bir obby'nin büyük bir boşluğu gibi. Aşağıdaki gibi üç bağlantılı parçayı oluşturun.
- Zamanlayıcı Görüntüsü
- Köprü
- Buton Köprüsü
aktif değildeğilken, köprü yarı透明 olacaktır. Bunu yapmak için Köprüyü Seç ve özelliklerini değiştir.
- Şeffaflık = 0.8
- Çarpışabilir mi? = Hayır
Zamanlayıcı Ekranı Oluşturulması
Köprüyü geçerken, oyuncular köprünün kaybolmadan önce kaç saniye olduğunu görmek zorunda kalacak. Bir yüz güisi gibi bir nesneyi bir parçaya ekleyerek görüntüleri veya metni gösteren bir yol. Yüz güileri ayrıca oyun içi işaretler, özel sağl
Select TimerDisplay ve bir Yüze Gui ekle. Sonra, Yüze Gui'nin altına, bir TextLabel ekle.
Yüzey GUI'sini seçin. Özellikler'de aşağıdaki değişiklikleri yapın:
- Oyuncunun bakış yönünde oyunun etiketlerini görebilmeniz için Yüzünü değiştirin.
TextLabel'ı seçin. Özellikler'de aşağıdaki değişiklikleri yapın:
- Boyutu 1, 0,1, 0 olarak ayarla.
- Set TextScaled ınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınını
- Boş bırakılacak Metin ayarlanır. Metin, kod kullanılarak güncellenecek.
Script'i ayarlama
Artık saat dünya, köprüyü kontrol etmek ve oyunculara sayıyı göstermek için bir senaryo oluşturun.
Köprü bölümünde, TimedBridge adında yeni bir senaryo ekleyin. Bu senaryoda, 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 dayanıklı olacağılocal timerDuration = 5
Dokunum Etkileşimini Kodlama
Köprüyü kullanmak için iki işlev oluşturmanız gerekir. Bir işlev, köprüyü yürüyecek ve zamanlayıcıyı gösterecektir. Diğer işlev, bir oyuncunun köprüyü etkinleştiren düğmeye dokunması durumunda dinleyecektir.
startTimer() içinde bir print ifadesi olan yeni bir işlev oluşturun. kodtest etmek için print ifadesini kullanacaksınız.
local timerDuration = 5local function startTimer()print("Countdown started")endBir insanoid'in butona dokunup dokunmadığını kontrol etmek için buttonPressed() kodunu yazın. Fonksiyon bir partTouched parametresi kabul etmelidir ve sonra bir insanoid'in bu bölümde tespit edildiğinde boş bir ifadeyi içerecek şekilde yazılmalıdır.
local function startTimer()print("Countdown started")endlocal function buttonPressed(partTouched)local character = partTouched.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")if humanoid thenendendZamanlayıcıyı başlatmak için, if ifadesinde, startTimer() işlevini çağırın.
local function buttonPressed(otherPart)local character = otherPart.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")if humanoid thenstartTimer()endendbuttonPressed() ın sonunda, düğmenin buttonPressed() etkinliğine 8> buttonPressed() fonksiyonunu 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 Çıktı penceresindeki kontrol kutusuna giderek yazılımı görün.
Hata ayıklama ipuçları
Bu noktada, köprü istediğiniz gibi çalışmazsa, aşağıdaki birini deneyin.
Mesajı sorunlu bir iletişim mesajı yazıyor: " #... değil bir geçerli üye değil".
TimedBridge kısmında, tüm parçaların Explorer'da göründüğü gibi yazıldığından emin olun. Sorun : Parçaları göremiyorum.
Tüm üç parçanın yerleştirildiğinden emin olun.
Köprü için Görünürlük özelliğini kontrol edin.
Zamanlayıcıyı Oluşturma
Oyuncular köprüye adım atığında, startTimer() köprüyü yürüyebilir hale getirir ve timer'ı başlatır. Timer 0'a ulaştığında, köprü yürüyemeyecek kadar yavaş hale gelir, böylece yeterince hızlı olmayan herkes düşmeye başlar.
Köprüyü Yürüyebilir Hale Getirme
Başlamak için, kodun köprüyü güçlendirmesi veya çarpıştırılabilir hale getirmesi gerekir, ardından yürüyemeye kadar bir zamanlayıcıyı başlatmalıdır.
Köprüyü yürüyebilir hale getirmek için, startTimer() , köprünün Opaklık ö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üyebilir hale getirinbridge.Transparency = 0bridge.CanCollide = trueendGeri sayım için bir zamanlayıcı oluşturmak için aşağıdaki değerlerle bir for oluşturun.
- Değişken Kontrol Etme : isimlendirilmiş count , timerDuration ile ayarlanmıştır.
- Sona Ulaştık : 0
- Artışı : -1
local function startTimer()-- Köprüyü görünür ve yürüyebilir hale getirinbridge.Transparency = 0bridge.CanCollide = truefor count = timerDuration, 0, -1 doendendOyunculara timer'ı göstermek için, text'i timerText değiştirerek sayıyı gösterin, bir iticiyi tamamladığında sayıyı gösterin. Her tekrar işlemi tamamladığında, oyunculara sayıyı gösterir.
for count = timerDuration, 0, -1 dotimerText.Text = countendTask.wait işlevini kullanarak sadece bir saniye için for döngüsü çalıştırılır.
for count = timerDuration, 0, -1 dotimerText.Text = counttask.wait(1)endoyunbaşlatın. Düğmeye dokunduğunuzda köprü görünmeli ve timer başlayacak, sonra tamamlayın.
Köprüyü Yeniden Başlatırken Tutmak
Fakat düğme etrafında hareket ederseniz, sayacı sürekli yeniden başlatacaktır.
Bunun nedeni, düğmeye dokunduğunuzda her seferinde for döngüsü çağrılmasını sağlayan for döngüsü olarak adlandırılıyor olmasıdır. Timer'ı sürekli yeniden başlatmak için bir boBoolean, bir değişken türü eklemelisiniz, böylece timer'ın tekrar çağrılmasına izin verilip etmeyeceğini kontrol edebilirsiniz. Booleans aynı şekilde diğer değişkenler yazılır, ancak sayılar veya senetler kullanarak yerine, sadece doğru veya yanlış olarak ayarlanabilir. Bu durumda, kullanıcının başlatılmadan önce timer'ın çalıştığından emin olmak için bir booleans kullanacaktır.
Yazınızın üstünde, değişkenlerinizin altında, bir değişken oluşturun ve değerini timerActive olarak ayarlayın, çünkü henüz kimse düğmeye basmadı.
local timerDuration = 5local timerActive = falselocal function startTimer()Eğer timerActive boBooleanının yanlış olduğundan emin olmak için, ifadeyi buttonPressed() ile bir ikinci koşul ekleyin.
local function buttonPressed(otherPart)local character = otherPart.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")if humanoid and timerActive == false thenstartTimer()endendZamanlayıcının zamanlanmasından önce tekrar çalışmasını önlemek için, startTimer() ın doğrulanmasını timerActive ile açık bırakın.
local function startTimer()timerActive = truebridge.Transparency = 0bridge.CanCollide = trueIn the startTimer() function, sonra for loop, set the bridge back to its original properties by changing the bridge's transparency to 0.8 and CanCollide to false.
local function startTimer()timerActive = truebridge.Transparency = 0bridge.CanCollide = true-- TimerDuration'dan sayılan döngüfor count = timerDuration, 0, -1 dotimerText.Text = counttask.wait(1)end-- Köprüyü yürüyebilir hale getirmebridge.Transparency = 0.8bridge.CanCollide = falseendKöprüyü sıfırlamak için son bir şey, köprünün orijinal hali gibi boş bir yazı olarak değiştirilmesidir. Sonra, timerText boşluk değerini değiştirin.
bridge.Transparency = 0.8bridge.CanCollide = falsetimerText.Text = ""timerActive = falseKöprüyü birden fazla kullanılabilir olduğundan emin olmak için oyun testi yapın ve kontrol edin.
Zamanlı Köprü Kısmını Tamamla
local bridge = script.Parent
-- Butonu Explorer'da yazıldığı gibi alır
local button = workspace.ButtonBridge
-- Görüntü için parçayı alır
local timerPart = workspace.TimerDisplay
-- Sayacı gösterecek olan metni alır
local timerText = timerPart.SurfaceGui.TextLabel
-- Oyuncular köprüyü geçmek için ne kadar beklemelidir
local timerDuration = 5
local timerActive = false
local function startTimer()
print("Countdown started")
timerActive = true
bridge.Transparency = 0
bridge.CanCollide = true
-- TimerDuration'dan sayılan döngü
for count = timerDuration, 0, -1 do
timerText.Text = count
task.wait(1)
end
-- Köprüyü yürüyebilir 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
Koşullar, eğlenceli oyun anları oluşturmak için farklı etkileşim yollarıyla birleştirilebilir. Bu öğretici, bir sayıya geri sayım için bir zamanlayıcı kullanarak oluşturulan bir geçici köprü oluşturur. Geçici köprü, oyuncuların geçişi için sınırlı bir süre verir.