Proyek ini adalah contoh lain menggunakan untuk loop dengan cara praktis.Untuk jembatan ini, pemain akan menyentuh tombol untuk membuat jembatan dapat dilalui untuk waktu terbatas sebelum menghilang.Untuk membuat pengatur waktu dan menampilkan waktu yang tersisa kepada pemain, Anda akan menggunakan untuk loop.
Menyiapkan proyek
Jembatan ini dapat dimasukkan dalam proyek permainan dengan tantangan berbasis gerakan, seperti obby.
Buat bagian
Temukan tempat untuk membangun jembatan, seperti sungai atau celah besar di obby. Buat tiga bagian diikat seperti di bawah ini.
- Layar Timer
- Jembatan
- Jembatan Tombol
Saat tidak aktif, jembatan akan semi-transparan. Untuk melakukannya, pilih Jembatan dan ubah propertinya.
- Transparansi = 0.8
- Dapat bertabrakan = Salah
Buat tampilan timer
Saat melintasi jembatan, pemain perlu melihat berapa banyak detik yang tersisa sebelum jembatan menghilang.Salah satu cara untuk menampilkan gambar atau teks adalah dengan menambahkan objek yang disebut GUI Surface ke bagian. GUI Permukaan juga dapat digunakan untuk membuat tanda dalam game, bar kesehatan khusus, dan sistem inventaris.Tutorial ini akan melalui ini dengan cepat, tetapi lebih banyak informasi dapat ditemukan di bagian Tutorial.
Pilih TimerDisplay dan tambahkan SurfaceGui . Kemudian, diberi kepada Surface Gui, tambahkan Label Teks .
Pilih GUI Permukaan. Di Properti, buat perubahan berikut:
- Ubah Wajah sehingga Anda dapat melihat label teks di depan timer di mana pemain melihat.
Pilih Label Teks. Dalam Properti, buat perubahan berikut:
- Tetapkan Ukuran ke .
- Tetapkan TextScaled menjadi benar.
- Tetapkan Teks untuk kosong. Teks akan diperbarui menggunakan skrip.
Menyiapkan skrip
Sekarang timer sudah ada, buat skrip untuk mengontrol jembatan dan tampilkan nomor hitung mundur kepada pemain.
Di bagian Jembatan, tambahkan skrip baru bernama TimedBridge. Dalam skrip itu, buat variabel berikut.
local bridge = script.Parentlocal button = workspace.ButtonBridgelocal timerText = workspace.TimerDisplay.SurfaceGui.TextLabel-- Sudah berapa lama jembatan akan tetap solidlocal timerDuration = 5
Kode interaksi sentuhan
Untuk menggunakan jembatan, Anda perlu membuat dua fungsi.Satu fungsi akan membuat jembatan dapat dilalui dan menampilkan timer.Fungsi lain akan mendengarkan jika pemain menyentuh tombol yang mengaktifkan jembatan.
Buat fungsi baru bernama startTimer() dengan pernyataan cetak di dalamnya. 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 berlaku menyentuh tombol.Fungsi harus menerima parameter partTouched , dan kemudian memiliki pernyataan kosong jika humanoid 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 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 tombol Touched.
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 Keluaran untuk melihat pernyataan cetak.
Tip pemecahan masalah
Pada titik ini, jika jembatan tidak berfungsi seperti yang diinginkan, coba salah satu dari berikut. Masalah : Pesan kesalahan mengatakan: "... is not a valid member of workspace" .
Dalam skrip TimedBridge, periksa apakah semua bagian ditulis persis seperti yang terlihat di Explorer. Masalah : Tidak bisa melihat bagiannya.
Pastikan ketiga bagian tersebut diikat.
Periksa properti Transparansi untuk jembatan.
Buat pengatur waktu
Setiap kali pemain menginjak jembatan, startTimer() akan membuat jembatan dapat dilalui dan memulai timer.Setelah timer mencapai 0, jembatan akan menjadi tidak dapat ditempuh, menyebabkan siapa pun yang tidak cukup cepat jatuh.
Buat jembatan dapat dilalui
Untuk memulai, skrip akan perlu membuat jembatan solid, atau dapat bertabrakan dan kemudian memulai pengatur waktu sampai menjadi tidak dapat dilalui.
Untuk membuat jembatan dapat dilalui, di startTimer() , ubah properti Transparansi jembatan menjadi 0 (opak) dan properti CanCollide menjadi benar.
local function startTimer()-- Jadikan jembatan terlihat dan dapat dilaluibridge.Transparency = 0bridge.CanCollide = trueendUntuk membuat penghitung mundur, buat loop dengan nilai berikut.
- Variabel Kontrol : diberi nama count , ditetapkan 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 kepada pemain, ubah teks di timerText untuk menampilkan hitungan dengan mengetik timerText.Text = count .Setiap kali loop for pergi melalui iterasi, itu akan menunjukkan pemain nomor berikutnya di timer.
for count = timerDuration, 0, -1 dotimerText.Text = countendGunakan fungsi task.wait untuk membuat loop for hanya berjalan sekali setiap detik.
for count = timerDuration, 0, -1 dotimerText.Text = counttask.wait(1)endJalankan game. Saat Anda menyentuh tombol, jembatan harus muncul dan timer akan dimulai, lalu selesai.
Jaga jembatan agar tidak dimulai ulang
Perhatikan, jika Anda bergerak di sekitar tombol, timer akan terus dimulai ulang.
Ini karena loop for dipanggil setiap kali Anda menyentuh tombol dan memulai loop for dari awal.Untuk menjaga agar timer tidak terus-menerus dimulai ulang, Anda perlu menambahkan boolean, jenis variabel, yang akan mengontrol apakah atau tidak startTimer() diizinkan untuk dipanggil lagi. Booleans ditulis dengan cara yang sama dengan variabel lain, tetapi bukannya menggunakan angka atau string, mereka hanya dapat diatur ke benar atau salah.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 timerActive boolean palsu, 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 menjaga startTimer() agar tidak berjalan lagi sebelum timer habis, atur boolean timerActive ke benar.
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-- Untuk loop yang menghitung mundur dari durasi waktu timerfor 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 ke string kosong seperti semula.Kemudian, atur timerActive boolean ke false.
bridge.Transparency = 0.8bridge.CanCollide = falsetimerText.Text = ""timerActive = falseTes uji dan periksa untuk memastikan jembatan dapat digunakan beberapa kali.
Selesaikan skrip jembatan terjadwal lengkap
local bridge = script.Parent
-- Mendapatkan tombol saat ditulis 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("Countdown started")
timerActive = true
bridge.Transparency = 0
bridge.CanCollide = true
-- Untuk loop yang menghitung mundur dari durasi waktu timer
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("part touched")
if humanoid and timerActive == false then
print("starting timer")
startTimer()
end
end
button.Touched:Connect(buttonPressed)
Singkatan
Lingkaran dapat dikombinasikan dengan berbagai cara interaksi untuk menciptakan momen permainan menyenangkan.Dalam tutorial ini, jembatan berjangka dibuat menggunakan loop for yang berfungsi sebagai hitung mundur.Selama hitung mundur, pemain diberi waktu terbatas untuk menyeberang.