Pratica dei loop - crea un ponte temporale

*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 dei cicli in modo pratico.Per questo ponte, i giocatori toccheranno un pulsante per rendere un ponte percorribile per un tempo limitato prima che scompaia.Per creare un timer e mostrare il tempo rimanente a un Giocatore, userai i cicli.

Configura il progetto

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

Creare parti

  1. Trova un posto per costruire un ponte, come un fiume o un grande gap in un Percorso ad ostacoli. Crea tre parti ancorate come sotto.

    • TimerDisplay
    • Ponte
    • Ponte di pulsante
  2. Quando Inattivo, Inattiva, Inattivi, il bridge sarà semi-trasparente. Per farlo, seleziona il Bridge e cambia le sue proprietà.

    • Trasparenza = 0.8
    • PuòCollidere = False

Crea l'esibizione del timer

Durante il passaggio sul ponte, i giocatori dovranno vedere quanti secondi mancano prima che il ponte scompaia.Un modo per visualizzare immagini o testo è aggiungendo un oggetto chiamato GUI di superficie a una parte. Le interfacce utente superficiali possono anche essere utilizzate per creare segnali in gioco, barre della salute personalizzate e sistemi di inventario.Questo tutorial passerà attraverso questo rapidamente, ma ulteriori informazioni possono essere trovate nella sezione Tutorial.

  1. Seleziona TimerDisplay e aggiungi un SurfaceGui . Quindi, parented al Surface Gui, aggiungi un TextLabel .

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

    • Cambia il Volto in modo da poter vedere l'etichetta del testo sulla parte anteriore del timer in cui il giocatore sta guardando.
  3. Seleziona il TextLabel. Nelle proprietà, apporta i seguenti cambiamenti:

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

Configurare lo 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 Bridge, aggiungi un nuovo script chiamato TimedBridge. In quel script, crea le seguenti variabili.


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

Codifica l'interazione touch

Per utilizzare il ponte, dovrai creare due funzioni.Una funzione renderà 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. Codifica una funzione chiamata buttonPressed() per controllare se un umanoide tocca il pulsante.La funzione dovrebbe accettare un parametro di partTouched , e poi avere una dichiarazione vuota se viene rilevato un umanoide 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(), connetti la funzione buttonPressed() alla funzione dell'evento del pulsante Touched.


    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 finestra Output per vedere la dichiarazione di stampa.

Suggerimenti per la risoluzione dei problemi

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

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

  • Assicurati che tutte e tre le parti siano Ancorate.

  • Controlla la proprietà Trasparenza per il ponte.

Crea il timer

Ogni volta che i giocatori mettono piede sul ponte, startTimer() renderà il ponte percorribile e avvierà il timer.Una volta che il timer raggiunge 0, il ponte diventerà non percorribile, causando chiunque non sia abbastanza veloce a Caduta.

Rendi il ponte percorribile

Per Iniziare, cominciare, lo script dovrà rendere il ponte solido, o collidibile e quindi avviare un timer fino a quando non diventerà intransitabile.

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


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

    • Variabile di controllo : chiamata count , impostata su timerDuration .
    • Fine : 0
    • Incremento : -1

    local function startTimer()
    -- Rendi il ponte visibile e percorribile
    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 visualizzare il conteggio digitando timerText.Text = count .Ogni volta che il ciclo while passa attraverso un'iterazione, mostrerà ai giocatori il prossimo numero nel timer.


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


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

Mantieni il ponte da riavviare

Nota però, se ti muovi intorno al pulsante, il timer continuerà a riavviarsi.

Questo perché il ciclo while viene chiamato ogni volta che tocchi il pulsante e inizia il ciclo while dall'inizio.Per evitare che il timer si riavvii costantemente, dovrai aggiungere un boolean, un tipo di variabile, che controllerà se startTimer() è consentito di essere chiamato di nuovo. Booleans vengono 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 utilizzerà un booleano per controllare se il timer è attualmente in esecuzione prima di avviarlo.

  1. In cima al tuo script, sotto le tue variabili, crea una variabile chiamata timerActive e impostala su false poiché nessuno ha ancora premuto il pulsante.


    local timerDuration = 5
    local timerActive = false
    local function startTimer()
  2. Per assicurarsi che il timer inizi solo quando il timerActive booleano è falso, aggiungi una seconda condizione allo statement if 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 mantenere startTimer() da eseguire nuovamente prima che il timer scada, imposta il boolean timerActive a vero.


    local function startTimer()
    timerActive = true
    bridge.Transparency = 0
    bridge.CanCollide = true
  4. Nella funzione startTimer(), dopo il ciclo for, imposta il ponte nuovamente 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 ciclo che conta a partire da timerDuration
    for count = timerDuration, 0, -1 do
    timerText.Text = count
    task.wait(1)
    end
    -- Rendi il ponte non percorribile
    bridge.Transparency = 0.8
    bridge.CanCollide = false
    end
  5. L'ultima cosa per ripristinare il bridge è cambiare il timerText in una stringa vuota come era originariamente.Quindi, imposta il timerActive booleano a falso.


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

Completa lo script del ponte temporale


local bridge = script.Parent
-- Ottiene il pulsante mentre viene digitato nell'esploratore
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 ciclo che conta a partire da timerDuration
for count = timerDuration, 0, -1 do
timerText.Text = count
task.wait(1)
end
-- Rendi il ponte non percorribile
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)

Sommariamente

I cicli possono essere combinati con diversi mezzi di interazione per creare momenti di gioco divertenti.In questo Tutoriale, un ponte temporale viene creato utilizzando un ciclo while che funge da conto alla rovescia.Durante il conto alla rovescia, ai giocatori viene concesso un tempo limitato per attraversare.