Proyek ini adalah contoh lain dari menggunakan untuk loop dalam waktu yang terbatas. Untuk jembatan ini, pemain akan menyentuh tombol untuk membuat jembatan dapat dilalui untuk waktu terbatas sebelum menghilang. Untuk menciptakan timer dan menunjukkan waktu yang tersisa ke pemain, Anda akan menggunakan untuk loop.
Mengatur Proyek
Jembatan ini dapat diłączy ke proyek game apa pun dengan tantangan berbasis gerakan, seperti obby.
Membuat Bagian
Temukan tempat untuk membangun jembatan, seperti sungai atau celah besar di obby. Buat tiga bagian terancang seperti di bawah ini.
- Jadwal Waktu
- Menjembatani
- Jembatan Tombol
Ketika tidak aktif, jembatan akan menjadi semi-transparan. Untuk melakukannya, pilih Jembatan dan ubah propernya.
- Transparansi = 0.8
- BisaSalinan = Benar
Membuat Timer Display
Saat menyeberangi jembatan, pemain harus melihat berapa banyak detik tersisa sebelum jembatan menghilang. Salah satu cara untuk menunjukkan gambar atau teks adalah dengan menambahkan objek bernama a Surface GUI ke bagian. a Surface GUI dapat juga digunakan untuk membuat tanda-tanda dalam game, batas kesehatan
Pilih TimerDisplay dan tambahkan SurfaceGui . Kemudian, bersama dengan Surface Gui, tambahkan TextLabel .
Pilih GUI Permukaan. Di Propinsi, buat perubahan berikut:
- Ubah Wajah sehingga Anda dapat melihat label teks di depan timer di mana pemain mencari.
Pilih TextLabel. Di Propinsi, buat perubahan berikut:
- Tetapkan Ukuran ke {1, 0},{1, 0} .
- Tetapkan TextScaled ke benar.
- Set Teks untuk menjadi kosong. Teks akan diperbarui menggunakan script.
Mengatur skrip
Sekarang setel timer berada di tempatnya, buat script untuk mengontrol jembatan dan menunjukkan nomor hitung mundur ke pemain.
Dalam 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 kuatlocal timerDuration = 5
Mengkode Interaksi Sentuh
Untuk menggunakan jembatan, Anda harus membuat dua fungsi. Satu fungsi akan membuat jembatan dapat dibayar dan menampilkan timer. Fungsi lain akan mendengarkan apakah seorang pemain menyentuh tombol yang mengaktifkan jembatan.
Buat fungsi baru bernama startTimer() dengan pernyataan cetak di dalam. Anda akan menggunakan pernyataan cetak untuk menguji kode Anda.
local timerDuration = 5local function startTimer()print("Countdown started")endKode fungsi bernama buttonPressed() untuk memeriksa apakah manusia menyentuh tombol. Fungsi harus menerima parameter partTouched , dan kemudian memiliki pernyataan kosong jika manusia terdeteksi di bagian itu.
local function startTimer()print("Countdown started")endlocal function buttonPressed(partTouched)local character = partTouched.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")if humanoid thenendendUntuk memulai timer, dalam if pernyataan, 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 jendelaOutput untuk melihat pernyataan cetak.
Tips Troubleshoot
Pada titik ini, jika jembatan tidak berfungsi sebagai yang diharapkan, coba salah satu dari berikut. Masalah : Pesan kesalahan mengatakan: "... is not a valid member of workspace" .
Dalam script TimedBridge, periksa bahwa semua bagian ditulis dengan benar seperti yang terlihat di Explorer. Masalah : Tidak dapat melihat bagiannya.
Pastikan ketiga bagian itu terancang.
Periksa transparansi propinsi untuk jembatan.
Membuat Timer
Setiap kali pemain menginjak jembatan, startTimer() akan membuat jembatan berjalan dan memulai timer. Setelah timer mencapai 0, jembatan akan menjadi tidak dapat dilalui, menyebabkan siapa pun yang tidak cepat cukup untuk jatuh.
Membuat Jembatan Dapat Dijalan Kaki
Untuk memulai, script akan perlu membuat jembatan kuat, atau dapat disentuh dan kemudian memulai timer sampai menjadi tidak dapat berjalan.
Untuk membuat jembatan dapat dibayar, dalam startTimer() ,ubah proporsi Transparansi jembatan menjadi 0 (opake) dan CanCollide menjadi true.
local function startTimer()-- Jadikan jembatan terlihat dan dapat dilaluibridge.Transparency = 0bridge.CanCollide = trueendUntuk membuat timer yang menghitung mundur, buat for loop dengan nilai berikut.
- Variabel Kontrol : bernama count , diatur ke timerDuration.
- Akhir : 0
- Peningkatan : -1
local function startTimer()-- Jadikan jembatan terlihat dan dapat dilaluibridge.Transparency = 0bridge.CanCollide = truefor count = timerDuration, 0, -1 doendendUntuk menunjukkan timer ke pemain, ubah teks di timerText untuk menunjukkan jumlah dengan mengetik timerText.Text = count . Setiap kali for loop melalui iterasi, itu akan menunjukkan pemain jumlah berikutnya dalam timer.
for count = timerDuration, 0, -1 dotimerText.Text = countendGunakan fungsi task.wait untuk membuat siklus for hanya berjalan sekali setiap detik.
for count = timerDuration, 0, -1 dotimerText.Text = counttask.wait(1)endLari game. Saat Anda menyentuh tombol, jembatan harus muncul dan timer akan dimulai, lalu selesai.
Menjaga Jembatan dari Restarting
Catat, jika Anda bergerak di sekitar tombol, timer akan terus dimulai ulang.
Ini karena for loop dianggap setiap kali Anda menyentuh tombol dan memulai for loop dari awal. Untuk menjaga timer agar tidak berhenti secara terus-menerus, Anda harus menambahkan boBoolean, jenis variabel, yang akan mengontrol apakah atau tidak startTimer() boleh dipanggil lagi. Booleans ditulis dengan cara yang sama dengan variabel lain, tetapi alih-alih menggunakan angka atau string, mereka hanya dapat diatur ke benar atau salah. Dalam situasi ini, script akan menggunakan booleans untuk memeriksa apakah timer saat ini berjalan sebelum memulainya.
Pada bagian atas skrip Anda, di bawah variabel Anda, buat variabel bernama timerActive dan tetapkan ke false karena belum ada yang menekan tombol tersebut.
local timerDuration = 5local timerActive = falselocal function startTimer()Untuk memastikan bahwa timer hanya dimulai ketika timerActive kondisi benar, tambahkan kondisi kedua ke if statement dalam buttonPressed() .
local function buttonPressed(otherPart)local character = otherPart.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")if humanoid and timerActive == false thenstartTimer()endendUntuk menjaga startTimer() dari berjalan lagi sebelum waktu habis, tetapkan boBoolean timerActive ke true.
local function startTimer()timerActive = truebridge.Transparency = 0bridge.CanCollide = trueDalam fungsi startTimer(), setel jembatan kembali ke proporsi aslinya dengan mengubah transparansi jembatan menjadi 0,8 dan CanCollide menjadi false.
local function startTimer()timerActive = truebridge.Transparency = 0bridge.CanCollide = true-- Untuk loop yang menghitung dari timerDurationfor count = timerDuration, 0, -1 dotimerText.Text = counttask.wait(1)end-- Jadikan jembatan tidak dapat berjalanbridge.Transparency = 0.8bridge.CanCollide = falseendSatu hal terakhir untuk mengatur ulang jembatan adalah to change the timerText to an empty string like it was originally. Kemudian, set the timerActive Boolean ke false.
bridge.Transparency = 0.8bridge.CanCollide = falsetimerText.Text = ""timerActive = falseMainkan dan periksa untuk memastikan jembatan dapat digunakan berkali-kali.
Selesaikan Skrip Jembatan Waktu
local bridge = script.Parent
-- Mendapatkan tombol saat ditgetik di Explorer
local button = workspace.ButtonBridge
-- Mendapatkan bagian untuk tampilan
local timerPart = workspace.TimerDisplay
-- Mendapatkan Teks yang akan menunjukkan timer
local timerText = timerPart.SurfaceGui.TextLabel
-- Berapa lama pemain harus menyeberangi jembatan
local timerDuration = 5
local timerActive = false
local function startTimer()
print("Countdown started")
timerActive = true
bridge.Transparency = 0
bridge.CanCollide = true
-- Untuk loop yang menghitung dari timerDuration
for count = timerDuration, 0, -1 do
timerText.Text = count
task.wait(1)
end
-- Jadikan jembatan tidak dapat berjalan
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)
Sintesis
Loop dapat dikombinasikan dengan berbagai cara interaksi untuk menciptakan momen permainan yang menyenangkan. Dalam tutorial ini, jembatan waktu dibuat menggunakan for yang berfungsi sebagai countdown. Selama countdown, pemain diberi waktu terbatas untuk menyeberang.