Proyek ini adalah contoh lain dari penggunaan loop for dengan cara yang praktis. Untuk jembatan ini, pemain akan menyentuh tombol untuk membuat jembatan dapat dilalui untuk waktu terbatas sebelum menghilang. Untuk membuat timer dan menunjukkan sisa waktu kepada pemain, Anda akan menggunakan loop for.
Siapkan proyek
Jembatan ini dapat disertakan dalam proyek Roblox apa pun yang memiliki tantangan berbasis gerakan, seperti obby.
Buat bagian
Temukan tempat untuk membangun jembatan, seperti sungai atau celah besar dalam obby. Buat tiga bagian anchored seperti di bawah ini.
- TimerDisplay
- Bridge
- ButtonBridge

Ketika tidak aktif, jembatan akan semi-transparan. Untuk melakukannya, pilih Bridge dan ubah propertinya.
- Transparency = 0.8
- CanCollide = False
Buat tampilan timer
Saat melintasi jembatan, pemain perlu melihat berapa banyak detik tersisa sebelum jembatan menghilang. Salah satu cara untuk menampilkan gambar atau teks adalah dengan menambahkan objek yang disebut Surface GUI ke suatu bagian. Surface GUIs juga dapat digunakan untuk membuat tanda dalam permainan, bilah kesehatan kustom, dan sistem inventaris. Tutorial ini akan membahas ini dengan cepat, tetapi informasi lebih lanjut dapat ditemukan di bagian Tutorials.
Pilih TimerDisplay dan tambahkan SurfaceGui. Kemudian, sebagai orang tua dari Surface Gui, tambahkan TextLabel.

Pilih Surface GUI. Di Properties, buat perubahan berikut:
- Ubah Face sehingga Anda dapat melihat label teks di depan timer di mana pemain melihat.
Pilih TextLabel. Di Properties, buat perubahan berikut:
- Atur Size menjadi {1, 0},{1, 0}.
- Atur TextScaled menjadi true.
- Biarkan Text kosong. Teks akan diperbarui menggunakan skrip.
Siapkan skrip
Sekarang bahwa timer sudah siap, buat skrip untuk mengontrol jembatan dan menampilkan angka hitung mundur kepada pemain.
Di bagian Bridge, tambahkan skrip baru bernama TimedBridge. Di skrip itu, buat variabel-variabel berikut.
local bridge = script.Parentlocal button = workspace.ButtonBridgelocal timerText = workspace.TimerDisplay.SurfaceGui.TextLabel-- Berapa lama jembatan akan tetap solidlocal timerDuration = 5
Kode interaksi sentuh
Untuk menggunakan jembatan, Anda perlu membuat dua fungsi. Satu fungsi akan membuat jembatan dapat dilalui dan menampilkan timer. Fungsi lainnya akan mendengarkan apakah seorang pemain menyentuh tombol yang mengaktifkan jembatan.
Buat fungsi baru bernama startTimer() dengan pernyataan print di dalamnya. Anda akan menggunakan pernyataan print untuk menguji kode Anda.
local timerDuration = 5local function startTimer()print("Hitung mundur dimulai")endKode fungsi bernama buttonPressed() untuk memeriksa apakah humanoid menyentuh tombol. Fungsi ini harus menerima parameter partTouched, dan kemudian memiliki pernyataan if kosong jika humanoid terdeteksi di bagian itu.
local function startTimer()print("Hitung mundur dimulai")endlocal function buttonPressed(partTouched)local character = partTouched.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")if humanoid thenendendUntuk memulai timer, di dalam pernyataan if, panggil fungsi startTimer().
local function buttonPressed(otherPart)local character = otherPart.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")if humanoid thenstartTimer()endendDi bawah akhir buttonPressed(), hubungkan fungsi buttonPressed() ke acara Touched tombol.
local function buttonPressed(otherPart)local character = otherPart.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")if humanoid thenstartTimer()endendbutton.Touched:Connect(buttonPressed)Jalankan proyek. Sentuh bagian dan periksa di jendela Output untuk melihat pernyataan print.
Tips memecahkan masalah
Pada titik ini, jika jembatan tidak berfungsi seperti yang diinginkan, coba salah satu dari yang berikut di bawah ini.
Masalah: Pesan kesalahan yang mengatakan: "... bukan anggota workspace yang valid".
- Di skrip TimedBridge, periksa bahwa semua bagian dieja persis seperti yang dilihat di Explorer.
Masalah: Tidak dapat melihat bagian-bagian.
- Pastikan semua tiga bagian terpasang (Anchored).
- Periksa sifat Transparansi untuk jembatan.
Buat timer
Setiap kali pemain melangkah di atas jembatan, startTimer() akan membuat jembatan dapat dilalui dan memulai timer. Begitu timer mencapai 0, jembatan akan menjadi tidak dapat dilalui, menyebabkan siapa pun yang tidak cukup cepat jatuh.
Buat jembatan dapat dilalui
Untuk memulai, skrip akan perlu membuat jembatan padat, atau dapat terdeteksi, dan kemudian memulai timer sampai menjadi tidak dapat dilalui.
Untuk membuat jembatan dapat dilalui, di startTimer(), ubah properti Transparansi jembatan menjadi 0 (tidak transparan) dan properti CanCollide menjadi true.
local function startTimer()-- Buat jembatan terlihat dan dapat dilaluibridge.Transparency = 0bridge.CanCollide = trueendUntuk membuat timer yang menghitung mundur, buat loop for dengan nilai-nilai berikut.
- Variabel Kontrol: bernama count, diatur ke timerDuration.
- Akhir: 0
- Peningkatan: -1
local function startTimer()-- Buat jembatan terlihat dan dapat dilaluibridge.Transparency = 0bridge.CanCollide = truefor count = timerDuration, 0, -1 doendendUntuk menunjukkan timer kepada pemain, ubah teks di timerText untuk menampilkan hitungan dengan mengetik timerText.Text = count. Setiap kali loop for melewati iterasi, itu akan menunjukkan kepada pemain angka berikutnya di timer.
for count = timerDuration, 0, -1 dotimerText.Text = countendGunakan fungsi task.wait untuk membuat loop for berjalan hanya sekali setiap detik.
for count = timerDuration, 0, -1 dotimerText.Text = counttask.wait(1)endJalankan pengalaman. Ketika Anda menyentuh tombol, jembatan harus muncul dan timer akan mulai, kemudian selesai.
Cegah jembatan dari memulai ulang
Namun, perhatikan, jika Anda bergerak di sekitar tombol, timer akan terus memulai ulang.
Ini karena loop for dipanggil setiap kali Anda menyentuh tombol dan memulai loop for dari awal. Untuk mencegah timer terus-menerus mulai ulang, Anda perlu menambahkan boolean, jenis variabel, yang akan mengontrol apakah startTimer() diizinkan untuk dipanggil lagi.
Boolean ditulis dengan cara yang sama seperti variabel lain, tetapi alih-alih menggunakan angka atau string, mereka hanya dapat diatur ke true atau false. Dalam situasi ini, skrip akan menggunakan boolean untuk memeriksa apakah timer saat ini sedang berjalan sebelum memulainya.
Di bagian atas skrip Anda, di bawah variabel Anda, buat variabel bernama timerActive dan setel ke false karena tidak ada yang belum menekan tombol.
local timerDuration = 5local timerActive = falselocal function startTimer()Untuk memastikan timer hanya dimulai saat boolean timerActive adalah false, tambahkan kondisi kedua ke pernyataan if di buttonPressed().
local function buttonPressed(otherPart)local character = otherPart.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")if humanoid and timerActive == false thenstartTimer()endendUntuk mencegah startTimer() dijalankan lagi sebelum timer habis, atur boolean timerActive menjadi true.
local function startTimer()timerActive = truebridge.Transparency = 0bridge.CanCollide = trueDalam fungsi startTimer(), setelah loop for, atur jembatan kembali ke properti aslinya dengan mengubah transparansi jembatan menjadi 0.8 dan CanCollide menjadi false.
local function startTimer()timerActive = truebridge.Transparency = 0bridge.CanCollide = true-- Loop for yang menghitung mundur dari timerDurationfor count = timerDuration, 0, -1 dotimerText.Text = counttask.wait(1)end-- Buat jembatan tidak dapat dilaluibridge.Transparency = 0.8bridge.CanCollide = falseendSatu hal terakhir untuk mereset jembatan adalah mengubah timerText menjadi string kosong seperti awalnya. Kemudian, setel boolean timerActive ke false.
bridge.Transparency = 0.8bridge.CanCollide = falsetimerText.Text = ""timerActive = falseUji coba dan periksa untuk memastikan jembatan dapat digunakan beberapa kali.
Skrip jembatan terukur lengkap
local bridge = script.Parent
-- Mendapatkan tombol saat diketik di Explorer
local button = workspace.ButtonBridge
-- Mendapatkan bagian untuk tampilan
local timerPart = workspace.TimerDisplay
-- Mendapatkan Teks yang akan menampilkan timer
local timerText = timerPart.SurfaceGui.TextLabel
-- Berapa lama pemain harus melintasi jembatan
local timerDuration = 5
local timerActive = false
local function startTimer()
print("Hitung mundur dimulai")
timerActive = true
bridge.Transparency = 0
bridge.CanCollide = true
-- Loop for yang menghitung mundur dari timerDuration
for count = timerDuration, 0, -1 do
timerText.Text = count
task.wait(1)
end
-- Buat jembatan tidak dapat dilalui
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("bagian disentuh")
if humanoid and timerActive == false then
print("memulai timer")
startTimer()
end
end
button.Touched:Connect(buttonPressed)
Ringkasan
Loop dapat digabungkan dengan berbagai cara interaksi untuk menciptakan momen permainan yang menyenangkan. Dalam tutorial ini, sebuah jembatan terukur dibuat menggunakan loop for yang berfungsi sebagai hitung mundur. Selama hitung mundur, pemain diberikan waktu terbatas untuk melintas.