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 selama waktu terbatas sebelum menghilang. Untuk membuat timer dan menunjukkan sisa waktu kepada pemain, Anda akan menggunakan loop for.
Siapkan proyek
Jembatan ini dapat dimasukkan ke dalam proyek Roblox mana pun dengan 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

Saat 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 detik yang tersisa sebelum jembatan menghilang. Salah satu cara untuk menampilkan gambar atau teks adalah dengan menambahkan objek yang disebut Surface GUI ke sebuah bagian. Surface GUIs juga dapat digunakan untuk membuat tanda dalam permainan, bilah kesehatan kustom, dan sistem inventaris. Tutorial ini akan menjelaskan ini dengan cepat, tetapi informasi lebih lanjut dapat ditemukan di bagian Tutorials.
Pilih TimerDisplay dan tambahkan SurfaceGui. Kemudian, di dalam Surface Gui, tambahkan TextLabel.

Pilih Surface GUI. Di Properties, lakukan perubahan berikut:
- Ubah Face sehingga Anda dapat melihat label teks di depan timer di mana pemain melihat.
Pilih TextLabel. Di Properties, lakukan perubahan berikut:
- Atur Size menjadi {1, 0},{1, 0}.
- Atur TextScaled menjadi true.
- Atur Text menjadi kosong. Teks akan diperbarui menggunakan skrip.
Siapkan skrip
Sekarang setelah timer berada di tempat, buat skrip untuk mengontrol jembatan dan menampilkan angka hitung mundur kepada pemain.
Di bagian Bridge, tambahkan skrip baru bernama TimedBridge. Dalam skrip itu, buat 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 jika 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 seorang 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 event 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 tersebut dan periksa di jendela Output untuk melihat pernyataan print.
Tips pemecahan masalah
Pada titik ini, jika jembatan tidak berfungsi seperti yang diharapkan, coba salah satu dari yang berikut di bawah ini.
Masalah: Pesan kesalahan mengatakan: "... bukan anggota yang valid dari workspace".
- Di skrip TimedBridge, periksa bahwa semua bagian dieja persis seperti yang terlihat di Explorer.
Masalah: Tidak dapat melihat bagian-bagian.
- Pastikan semua tiga bagian terpasang.
- Periksa properti Transparency untuk jembatan.
Buat timer
Setiap kali pemain melangkah di jembatan, startTimer() akan membuat jembatan dapat dilalui dan memulai timer. Setelah timer mencapai 0, jembatan akan menjadi tidak dapat dilalui, menyebabkan siapa pun yang tidak cukup cepat jatuh.
Buat jembatan dapat dilalui
Untuk memulai, skrip perlu membuat jembatan solid, atau dapat bertabrakan dan kemudian memulai timer hingga menjadi tidak dapat dilalui.
Untuk membuat jembatan dapat dilalui, di dalam startTimer(), ubah properti Transparency jembatan menjadi 0 (opak) 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 berikut.
- Variabel Kontrol: bernama count, diatur ke timerDuration.
- Akhir: 0
- Inkrement: -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 count dengan mengetik timerText.Text = count. Setiap kali loop for melewati iterasi, itu akan menunjukkan angka berikutnya di timer kepada pemain.
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 permainan. Ketika Anda menyentuh tombol, jembatan harus muncul dan timer akan mulai, kemudian selesai.
Cegah jembatan dari memulai ulang
Namun, perhatikan bahwa 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 memulai ulang, Anda perlu menambahkan boolean, jenis variabel, yang akan mengontrol apakah startTimer() diizinkan untuk dipanggil lagi.
Boolean ditulis dengan cara yang sama seperti variabel lainnya, 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 atur ke false karena belum ada yang menekan tombol.
local timerDuration = 5local timerActive = falselocal function startTimer()Untuk memastikan timer hanya dimulai ketika 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() berjalan lagi sebelum timer habis, atur boolean timerActive menjadi true.
local function startTimer()timerActive = truebridge.Transparency = 0bridge.CanCollide = trueDi dalam 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 mengatur ulang jembatan adalah mengubah timerText menjadi string kosong seperti semula. Kemudian, atur boolean timerActive menjadi false.
bridge.Transparency = 0.8bridge.CanCollide = falsetimerText.Text = ""timerActive = falseUji coba dan periksa untuk memastikan jembatan dapat digunakan beberapa kali.
Skrip jembatan terhitung lengkap
local bridge = script.Parent
-- Mendapatkan tombol seperti yang 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 menyeberangi 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, jembatan terhitung dibuat menggunakan loop for yang berfungsi sebagai hitung mundur. Selama hitung mundur, pemain diberikan waktu terbatas untuk menyeberang.