In Lava mortale, hai imparato a generare codice in base al comportamento dell'utente.Questo tutorial ti mostra come creare una piattaforma che scompare quando un utente ci passa sopra.
Configurare
Se hai seguito Lava Mortale, puoi posizionare la tua piattaforma sbiadente sopra il pavimento di lava che gli utenti non possono saltare attraverso.
Inserisci una parte e movila nel tuo Mondo. Nominala FadingPlatform .
Ridimensionalo in modo che un utente possa saltarci sopra.
Assicurati che sia Ancorato .
Inserisci uno Script nella parte, rinominalo in FadeOnTouch e rimuovi il codice predefinito.
Crea una variabile per la piattaforma e una funzione vuota connessa all'evento della Piattaforma.
local platform = script.Parentlocal function fade()endplatform.Touched:Connect(fade)
Sbiadire la Piattaforma
Avere la piattaforma scomparire in un istante non sarebbe divertente affatto poiché gli utenti troverebbero impossibile attraversare il divario.Invece, la piattaforma dovrebbe svanire prima che gli utenti passino attraverso di essa per dare loro la possibilità di saltare Off.
Potresti cambiare la proprietà Transparency e aspettare un tempo molto breve più e più volte per ottenere questo effetto, ma un declino graduale richiederebbe almeno 10 cambiamenti tra 0 e 1.Sono 20 linee di codice molto ripetitivo.
Questo può essere raggiunto molto più efficacemente utilizzando un ciclo per che ripete il codice un numero specifico di volte.Ogni ciclo del codice è noto come un'iterazione **** .Un ciclo A è definito con tre cose, separate da virgole:
- Variabile di controllo - La variabile creata e utilizzata per contare i loop. In questo esempio, è count e il valore iniziale è 1.
- Valore finale - Il valore che deve ottenere per far terminare il ciclo. In questo esempio, è 10.
- Incremento passo (opzionale) - Determina cosa aggiungere alla variabile di controllo ogni ciclo.Se non viene specificato, predefinisce 1, quindi in questo esempio è inutile.
Nel FadeOnTouch :
Nella funzione, crea un ciclo for a partire da 1 che si ripete 10 volte.
All'interno del ciclo while, imposta la proprietà Transparency alla variabile di controllo divisa da 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, il conteggio aumenta di 1 ad ogni iterazione.Questo significa che la Piattaformadi Transparency aumenterà di 0,1 ogni 0,1 secondi, raggiungendo la piena trasparenza dopo 1 secondo.
Riapparire
Dopo che la piattaforma è scomparsa, gli utenti dovrebbero cadere attraverso di essa.La piattaforma dovrebbe anche tornare a pochi secondi dopo che scompare - altrimenti, gli utenti non potrebbero mai provare di nuovo il salto se falliscono.La proprietà CanCollide controlla se gli utenti possono cadere attraverso una parte.
Imposta la proprietà CanCollide della piattaforma a false dopo il ciclo for.
Aspetta qualche secondo usando la funzione task.wait().
Imposta la proprietà CanCollide di nuovo 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 attraversa la Piattaformasbiadita: la funzione verrà eseguita più volte, ripristinando il ciclo ogni volta.
Perché il codice funzioni correttamente, la funzione dovrebbe essere eseguita solo una volta quando l'utente tocca la piattaforma per la prima volta.Garantire che un'azione venga attivata solo una volta quando altrimenti verrebbe attivata più volte è noto come debounce .
Per debounce una funzione, una variabile boolena può essere utilizzata per tenere traccia quando la piattaforma è già stata toccata.I booleani possono contenere solo vero e falso valori.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
Una dichiarazione if può essere utilizzata solo per eseguire il codice nella funzione fade se la variabile di debounce isTouched è falsa.Avvolgi il corpo della funzione di dissoluzione in una dichiarazione 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 tutto ciò che lo segue.In Condizionicondizionali, questo significa che la prima dichiarazione if si comporta allo stesso modo delle dichiarazioni che Seguire.
if not isTouched thenendif isTouched == false thenendif isTouched == nil thenend
Attiva/disattiva il debounce
Attualmente, il codice nella funzione fade eseguirà sempre perché isTouched è falso e not isTouched si valuta a vero.Per completare la routine di debounce, dovrai attivare il valore della variabile in due luoghi.
- Imposta isTouched a true all'interno della dichiarazione if, prima che la piattaforma inizi a scomparire.
- Ripristinalo a 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)
Ecco fatto! Prova il tuo codice ora, e dovresti trovare che la piattaforma scompare quando l'utente ci salta sopra e torna indietro qualche secondo dopo.
Puoi duplicare questa piattaforma attraverso uno spazio più ampio per creare un ostacolo impegnativo e cambiare la velocità a cui scompaiono per bilanciare la difficoltà.
Codice codice
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)