In Lava Mortale, hai imparato come attivare codice in base al comportamento dell'utente. Questo tutorial ti mostra come creare una piattaforma che svanisce quando un utente ci salta sopra.
Imposta
Se hai seguito Lava Mortale, puoi posizionare la tua piattaforma che svanisce sopra il pavimento di lava che gli utenti non possono saltare.
Inserisci una parte e spostala nella posizione desiderata nel tuo mondo. Chiamala FadingPlatform.
Ridimensionala in modo che un utente possa saltarci sopra.
Assicurati che sia Ancorata.

Inserisci uno Script nella parte, rinominalo in FadeOnTouch e rimuovi il codice predefinito.

Crea una variabile per la piattaforma e una funzione vuota collegata all'evento Touched della piattaforma.
local platform = script.Parentlocal function fade()endplatform.Touched:Connect(fade)
Fai svanire la piattaforma
Far svanire la piattaforma in un istante non sarebbe affatto divertente, poiché gli utenti troverebbero impossibile attraversare il vuoto. Invece, la piattaforma dovrebbe svanire prima che gli utenti cadano attraverso di essa per dare loro la possibilità di saltare.
Potresti cambiare la proprietà Transparency e aspettare un tempo molto breve ripetutamente per ottenere questo effetto, ma un dissolvimento graduale richiederebbe almeno 10 cambiamenti tra 0 e 1. Sono 20 righe di codice molto ripetitivo.
Questo può essere ottenuto in modo molto più efficace utilizzando un ciclo for che ripete il codice un numero specifico di volte. Ogni ciclo del codice è noto come un'iterazione. Un ciclo for è definito con tre cose, separate da virgole:

- Variabile di controllo - La variabile creata e utilizzata per contare i cicli. In questo esempio, è count e il valore iniziale è 1.
- Valore finale - Il valore che deve raggiungere affinché il ciclo si fermi. In questo esempio, è 10.
- Incremento di passoOPZIONALE- Determina cosa aggiungere alla variabile di controllo ad ogni ciclo. Se omesso, il valore predefinito è 1, quindi in questo esempio è superfluo.
In FadeOnTouch:
Nella funzione, crea un ciclo for che inizia da 1 e itera 10 volte.
All'interno del ciclo for, imposta la proprietà Transparency sulla variabile di controllo divisa per 10.
Chiama la funzione task.wait() con un tempo di 0.1.
local platform = script.Parentlocal function fade()for count = 1, 10 doplatform.Transparency = count / 10task.wait(0.1)endendplatform.Touched:Connect(fade)
Quando il ciclo viene eseguito, count aumenta di 1 ad ogni iterazione. Questo significa che la Transparency della piattaforma aumenterà di 0.1 ogni 0.1 secondi, raggiungendo la trasparenza totale dopo 1 secondo.
Riapparire
Dopo che la piattaforma è svanita, gli utenti dovrebbero cadere attraverso di essa. La piattaforma dovrebbe anche tornare dopo alcuni secondi che svanisce - altrimenti, gli utenti non avrebbero mai la possibilità di provare il salto di nuovo se fallissero. La proprietà CanCollide controlla se gli utenti possono cadere attraverso una parte.
Imposta la proprietà CanCollide della piattaforma su false dopo il ciclo for.
Aspetta alcuni secondi usando la funzione task.wait().
Imposta di nuovo la proprietà CanCollide su true.
Imposta la proprietà Transparency di nuovo su 0.
local platform = script.Parentlocal function fade()for count = 1, 10 doplatform.Transparency = count / 10task.wait(0.1)endplatform.CanCollide = falsetask.wait(3)platform.CanCollide = trueplatform.Transparency = 0endplatform.Touched:Connect(fade)
Variabile di debounce
In Lava Mortale, hai imparato che l'evento Touched viene eseguito ogni volta che una parte del corpo di un utente entra in contatto con la parte. Questo comportamento causa problemi quando un utente corre attraverso la piattaforma che svanisce: la funzione verrà eseguita più volte, resettando il ciclo ogni volta.
Affinché il codice funzioni correttamente, la funzione dovrebbe essere eseguita solo una volta quando l'utente tocca la piattaforma per la prima volta. Assicurarsi che un'azione venga attivata solo una volta quando altrimenti verrebbe attivata più volte è noto come debounce.
Per debouncizzare una funzione, si può utilizzare una variabile boolean per tenere traccia di quando la piattaforma è già stata toccata. I booleani possono contenere solo valori true e false. Crea una variabile chiamata isTouched e impostala su false.
local platform = script.Parent
local isTouched = false
local function fade()
for count = 1, 10 do
platform.Transparency = count / 10
task.wait(0.1)
end
platform.CanCollide = false
task.wait(3)
platform.CanCollide = true
platform.Transparency = 0
end
platform.Touched:Connect(fade)Controlla la variabile
Un'istruzione if può essere utilizzata per eseguire il codice nella funzione fade solo se la variabile di debounce isTouched è falsa. Avvolgi il corpo della funzione fade in un'istruzione if con la condizione not isTouched.
local platform = script.Parent
local isTouched = false
local function fade()
if not isTouched then
for count = 1, 10 do
platform.Transparency = count / 10
task.wait(0.1)
end
platform.CanCollide = false
task.wait(3)
platform.CanCollide = true
platform.Transparency = 0
end
end
platform.Touched:Connect(fade)L'operatore not di Luau inverte il valore di ciò che lo segue. In termini condizionali, questo significa che la prima istruzione if si comporta allo stesso modo delle istruzioni che seguono.
if not isTouched then
end
if isTouched == false then
end
if isTouched == nil then
endAttiva il debounce
Attualmente, il codice nella funzione fade verrà sempre eseguito perché isTouched è falso e not isTouched valuta a true. Per completare la routine di debounce, dovrai attivare il valore della variabile in due posti.
- Imposta isTouched su true all'interno dell'istruzione if, prima che la piattaforma inizi a svanire.
- Impostalo di nuovo su false una volta che la piattaforma è riapparsa.
local function fade()
if not isTouched then
isTouched = true
for count = 1, 10 do
platform.Transparency = count / 10
task.wait(0.1)
end
platform.CanCollide = false
task.wait(3)
platform.CanCollide = true
platform.Transparency = 0
isTouched = false
end
end
platform.Touched:Connect(fade)E questo è tutto! Testa il tuo codice ora, e dovresti scoprire che la piattaforma svanisce quando l'utente ci salta sopra e riappare dopo alcuni secondi.
Puoi duplicare questa piattaforma su un vuoto più ampio per creare un ostacolo impegnativo e cambiare la velocità con cui svaniscono per bilanciare la difficoltà.
Codice finale
local platform = script.Parent
local isTouched = false
local function fade()
if not isTouched then
isTouched = true
for count = 1, 10 do
platform.Transparency = count / 10
task.wait(0.1)
end
platform.CanCollide = false
task.wait(3)
platform.CanCollide = true
platform.Transparency = 0
isTouched = false
end
end
platform.Touched:Connect(fade)