Loops Practice - Creazione di un ponte temporizzato

*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.

Questo progetto è un altro esempio di utilizzo per i loop in un modo pratico. Per questo ponte, i giocatori toccheranno un pulsante per rendere un ponte camminabile per un tempo limitato prima che scompaia. Per creare un timer e mostrare il tempo rimanente a un Giocatore, userai per i loop.

Configurazione del progetto

Questo ponte può essere incluso in qualsiasi progetto di gioco con sfide basate sul movimento, come un Percorso ad ostacoli.

Creazione di parti

  1. Trova un luogo per costruire un ponte, come un fiume o uno spazio grande in un Percorso ad ostacoli. Crea tre ancorate parti come quelle seguenti.

    • Display del Temporizzatore
    • Ponte
    • Ponte del pulsante
  2. Quando Inattivo, Inattiva, Inattivi, il ponte sarà semi-trasparente. Per farlo, seleziona il Ponte e cambia le sue proprietà.

    • Trasparenza = 0.8
    • CanCollide = Falso

Creazione della schermata del timer

Quando si attraversa il ponte, i giocatori dovranno vedere quante secondi sono rimasti prima che il ponte scompaia. Un modo per visualizzare le immagini o il testo è aggiungendo un oggetto chiamato a Surface GUI a una parte. Surface GUIs possono anche essere utilizzati per creare segni, barre di salute personalizzate e sistemi di inventario. Questo tutorial andrà attraverso questo rapidamente, ma ulterior

  1. Seleziona TimerDisplay e aggiungi un SurfaceGui . Quindi, legato alla Surface Gui, aggiungi un TextLabel .

  2. Seleziona la GUI or Intefaccia grafica utentedella superficie. Nelle Proprietà, apporta i seguenti cambiamenti:

    • Cambia il viso in modo da poter vedere l'etichetta di testo sulla parte anteriore del timer in cui il giocatore sta guardando.
  3. Seleziona il TextLabel. In the Properties, make the following changes:

    • Imposta Dimensione su {1, 0},{1, 0} .
    • Imposta TextScaled su vero.
    • Imposta Text per essere vuoto. Il testo verrà aggiornato utilizzando lo script.

Configurazione dello script

Ora che il timer è in Posto, crea uno script per controllare il ponte e visualizzare il numero di conto alla rovescia ai giocatori.

  1. Nella parte del ponte, aggiungi uno script nuovo chiamato TimedBridge. In quel script, crea le seguenti variabili.


    local bridge = script.Parent
    local button = workspace.ButtonBridge
    local timerText = workspace.TimerDisplay.SurfaceGui.TextLabel
    -- Quanto tempo il ponte resterà solido
    local timerDuration = 5

Codice l'interazione touch

Per utilizzare il ponte, dovrai creare due funzioni. Una funzione creerà il ponte percorribile e visualizzerà il timer. L'altra funzione ascolterà se un giocatore tocca il pulsante che attiva il ponte.

  1. Crea una nuova funzione chiamata startTimer() con una dichiarazione di stampa all'interno. Utilizzerai la dichiarazione di stampa per testare il tuo codice.


    local timerDuration = 5
    local function startTimer()
    print("Countdown started")
    end
  2. Codice una funzione chiamata buttonPressed() per controllare se un umanoide tocca il pulsante. La funzione dovrebbe accettare un parametro di partTouched e quindi avere una dichiarazione vuota se un umanoide viene rilevato in quella parte.


    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. Per avviare il timer, nella dichiarazione if, chiama la funzione startTimer().


    local function buttonPressed(otherPart)
    local character = otherPart.Parent
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")
    if humanoid then
    startTimer()
    end
    end
  4. Alla fine di buttonPressed(), connect the buttonPressed() function to the button's Touched event.


    local function buttonPressed(otherPart)
    local character = otherPart.Parent
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")
    if humanoid then
    startTimer()
    end
    end
    button.Touched:Connect(buttonPressed)
  5. Esegui il progetto. Tocca la parte e controlla nella finestraOutput per vedere la dichiarazione di stampa.

Risolvere i problemi

A questo punto, se il ponte non funziona come previsto, prova uno dei seguenti sotto. Errore : Messaggio di errore dicendo: "... is not a valid member of workspace" .

  • Nello script TimedBridge, controlla che tutte le parti siano spellate esattamente come vengono visualizzate nell'Explorer. Problema : Non riesco a vedere le parti.

  • Assicurati che tutte le tre parti siano ancorate.

  • Controlla la proprietà Trasparenza per il ponte.

Creazione del Timer

Quando i giocatori passano sul ponte, startTimer() renderà il ponte camminabile e inizierà il timer. Una volta che il timer raggiunge 0, il ponte diventerà non camminabile, causando chiunque non sia abbastanza veloce da Caduta.

Rendere il ponte camminabile

Per Iniziare, cominciare, lo script dovrà rendere il ponte solido, o collidibile e quindi iniziare un timer finché diventa in走abile.

  1. Per rendere il ponte camminabile, in startTimer() , cambia la proprietà di trasparenza del ponte a 0 (opaco) e la proprietà di CanCollide a true.


    local function startTimer()
    -- Rendi il ponte visibile e camminabile
    bridge.Transparency = 0
    bridge.CanCollide = true
    end
  2. Per creare un timer che conta a basso, crea un for loop con i seguenti valori.

    • Controllo variabile : chiamato count , impostato su timerDuration .
    • Fine : 0
    • Incremento : -1

    local function startTimer()
    -- Rendi il ponte visibile e camminabile
    bridge.Transparency = 0
    bridge.CanCollide = true
    for count = timerDuration, 0, -1 do
    end
    end
  3. Per mostrare il timer ai giocatori, cambia il testo in timerText per mostrare il conteggio facendo clic su timerText.Text = count . Ogni volta che il for loop passa attraverso un'iterazione, mostrerà ai giocatori il prossimo numero nel timer.


    for count = timerDuration, 0, -1 do
    timerText.Text = count
    end
  4. Usa la funzione task.wait per eseguire il ciclo di ripetizione solo una volta al secondo.


    for count = timerDuration, 0, -1 do
    timerText.Text = count
    task.wait(1)
    end
  5. Esegui il Gioco. Quando tocchi il pulsante, il ponte dovrebbe apparire e il timer dovrebbe Iniziare, cominciare, quindi completarlo.

Mantenere il ponte dal riavvio

Nota, however, se ti muovi sul pulsante, il timer continuerà ad essere riavviato.

Questo perché il for loop viene chiamato ogni volta che tocchi il pulsante e inizi il for loop dall'inizio. Per mantenere il timer da riavviare costantemente, dovrai aggiungere unBoolean, un tipo di variabile, che controlla se o no startTimer() può essere chiamato di nuovo. I booleani sono scritti allo stesso modo di altre variabili, ma invece di utilizzare numeri o stringhe, possono essere impostati solo su vero o falso. In questa situazione, lo script utilizza un booleano per controllare se il timer è in esecuzione prima di avviarlo.

  1. Nella parte superiore dello script, sotto le tue variabili, crea una variabile chiamata timerActive e imposta su false poiché nessuno ha ancora premuto il pulsante.


    local timerDuration = 5
    local timerActive = false
    local function startTimer()
  2. Per assicurarsi che il timer non inizi mai quando il timerActive boolean è falso, aggiungi una seconda condizione all'if statement in buttonPressed() .


    local function buttonPressed(otherPart)
    local character = otherPart.Parent
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")
    if humanoid and timerActive == false then
    startTimer()
    end
    end
  3. Per evitare che startTimer() esegua di nuovo prima che il timer finisca, imposta il valore di verifica timerActive su true.


    local function startTimer()
    timerActive = true
    bridge.Transparency = 0
    bridge.CanCollide = true
  4. Nella funzione startTimer(), dopo il for loop, imposta il ponte alle sue proprietà originali cambiando la trasparenza del ponte a 0.8 e CanCollide a false.


    local function startTimer()
    timerActive = true
    bridge.Transparency = 0
    bridge.CanCollide = true
    -- Per il loop che conta da timerDuration
    for count = timerDuration, 0, -1 do
    timerText.Text = count
    task.wait(1)
    end
    -- Rendi il ponte non camminabile
    bridge.Transparency = 0.8
    bridge.CanCollide = false
    end
  5. L'ultima cosa per ripristinare il ponte è cambiare il timerText in una stringa vuota come quello originale. Quindi, imposta il timerActive boolean su false.


    bridge.Transparency = 0.8
    bridge.CanCollide = false
    timerText.Text = ""
    timerActive = false
  6. Prova e ripeti per assicurarti che il ponte possa essere utilizzato più volte.

Completa lo script del ponte temporale


local bridge = script.Parent
-- Ottiene il pulsante come viene digitato nell'Explorer
local button = workspace.ButtonBridge
-- Ottiene la parte per l'esposizione
local timerPart = workspace.TimerDisplay
-- Ottiene il testo che mostrerà il timer
local timerText = timerPart.SurfaceGui.TextLabel
-- Quanto tempo i giocatori devono attraversare il ponte
local timerDuration = 5
local timerActive = false
local function startTimer()
print("Countdown started")
timerActive = true
bridge.Transparency = 0
bridge.CanCollide = true
-- Per il loop che conta da timerDuration
for count = timerDuration, 0, -1 do
timerText.Text = count
task.wait(1)
end
-- Rendi il ponte non camminabile
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)

Panoramica

I loop possono essere combinati con diversi mezzi di interazione per creare momenti di gioco divertenti. In questo Tutoriale, viene creato un ponte temporizzato utilizzando un for loop che funziona come conto alla rovescia. Durante il conto alla rovescia, i giocatori ricevono un tempo limitato per attraversare.