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

Inserisci uno Script nella parte, rinominalo in SvanisciAlTocco, 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 all'improvviso non sarebbe per niente divertente, poiché gli utenti troverebbero impossibile attraversare il divario. Invece, la piattaforma dovrebbe svanire prima che gli utenti cadano attraverso di essa per dar loro una possibilità di saltare.
Potresti cambiare la proprietà Transparency e attendere un tempo molto breve ripetutamente per ottenere questo effetto, ma un dissolvenza 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 per fermare il ciclo. In questo esempio, è 10.
- Incremento di passo (opzionale) - Determina cosa aggiungere alla variabile di controllo ad ogni ciclo. Se omesso, il valore predefinito è 1, quindi in questo esempio non è necessario.
In SvanisciAlTocco:
Nella funzione, crea un ciclo for che parte 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. Ciò significa che la Transparency della piattaforma aumenterà di 0.1 ogni 0.1 secondi, raggiungendo la trasparenza completa dopo 1 secondo.
Riappare
Dopo che la piattaforma è svanita, gli utenti dovrebbero cadere attraverso di essa. La piattaforma dovrebbe anche riapparire alcuni secondi dopo che è svanita - altrimenti, gli utenti non avrebbero mai l'opportunità di riprovare il salto 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.
Attendi alcuni secondi utilizzando la funzione task.wait().
Imposta nuovamente la proprietà CanCollide su true.
Imposta la proprietà Transparency nuovamente 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 appreso che l'evento Touched viene eseguito ogni volta che un 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.
Per fare in modo che 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 è nota come debounce.
Per debouncare 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 di dissolvenza solo se la variabile di debounce isTouched è falsa. Avvolgi il corpo della funzione di dissolvenza 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 Luau not inverte il valore di ciò che lo segue. In termini condizionali, ciò significa che la prima istruzione if si comporta allo stesso modo delle istruzioni che seguono.
if not isTouched thenendif isTouched == false thenendif isTouched == nil thenend
Attiva il debounce
Attualmente, il codice nella funzione fade verrà sempre eseguito poiché isTouched è false e not isTouched è vero. Per completare la routine di debounce, dovrai attivare il valore della variabile in due posizioni.
- Imposta isTouched su true all'interno dell'istruzione if, prima che la piattaforma inizi a svanire.
- Impostalo nuovamente 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! Ora prova il tuo codice e dovresti scoprire che la piattaforma svanisce quando l'utente ci salta sopra e riappare alcuni secondi dopo.
Puoi duplicare questa piattaforma su un divario 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)