Latihan Loop - Menciptakan Jembatan Waktu

*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.

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

  1. 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
  2. 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

  1. Pilih TimerDisplay dan tambahkan SurfaceGui . Kemudian, bersama dengan Surface Gui, tambahkan TextLabel .

  2. Pilih GUI Permukaan. Di Propinsi, buat perubahan berikut:

    • Ubah Wajah sehingga Anda dapat melihat label teks di depan timer di mana pemain mencari.
  3. 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.

  1. Dalam bagian Bridge, tambahkan skrip baru bernama TimedBridge. Dalam skrip itu, buat variabel berikut.


    local bridge = script.Parent
    local button = workspace.ButtonBridge
    local timerText = workspace.TimerDisplay.SurfaceGui.TextLabel
    -- Berapa lama jembatan akan tetap kuat
    local 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.

  1. Buat fungsi baru bernama startTimer() dengan pernyataan cetak di dalam. Anda akan menggunakan pernyataan cetak untuk menguji kode Anda.


    local timerDuration = 5
    local function startTimer()
    print("Countdown started")
    end
  2. Kode 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")
    end
    local function buttonPressed(partTouched)
    local character = partTouched.Parent
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")
    if humanoid then
    end
    end
  3. Untuk memulai timer, dalam if pernyataan, panggil fungsi startTimer().


    local function buttonPressed(otherPart)
    local character = otherPart.Parent
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")
    if humanoid then
    startTimer()
    end
    end
  4. Di bawah akhir buttonPressed(), hubungkan fungsi buttonPressed() ke acara Touched tombol.


    local function buttonPressed(otherPart)
    local character = otherPart.Parent
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")
    if humanoid then
    startTimer()
    end
    end
    button.Touched:Connect(buttonPressed)
  5. 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.

  1. 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 dilalui
    bridge.Transparency = 0
    bridge.CanCollide = true
    end
  2. Untuk 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 dilalui
    bridge.Transparency = 0
    bridge.CanCollide = true
    for count = timerDuration, 0, -1 do
    end
    end
  3. Untuk 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 do
    timerText.Text = count
    end
  4. Gunakan fungsi task.wait untuk membuat siklus for hanya berjalan sekali setiap detik.


    for count = timerDuration, 0, -1 do
    timerText.Text = count
    task.wait(1)
    end
  5. Lari 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.

  1. 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 = 5
    local timerActive = false
    local function startTimer()
  2. 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.Parent
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")
    if humanoid and timerActive == false then
    startTimer()
    end
    end
  3. Untuk menjaga startTimer() dari berjalan lagi sebelum waktu habis, tetapkan boBoolean timerActive ke true.


    local function startTimer()
    timerActive = true
    bridge.Transparency = 0
    bridge.CanCollide = true
  4. Dalam fungsi startTimer(), setel jembatan kembali ke proporsi aslinya dengan mengubah transparansi jembatan menjadi 0,8 dan CanCollide menjadi false.


    local function startTimer()
    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
    end
  5. Satu 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.8
    bridge.CanCollide = false
    timerText.Text = ""
    timerActive = false
  6. Mainkan 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.