In Introduzione allo scripting , hai imparato a fare cambiamenti in un'esperienza in un loop nel tempo. Che cosa succede se vuoi apportare cambiamenti in base al comportamento dell'utente? In questo Tutoriale, imparerai a fare un soffitto di lava mortale che uccide gli utenti quando li mettono piedi sopra.
Configurazione
Hai bisogno di un posto nel tuo mondo per mettere la lava mortale. Se hai seguito il corso Introduzione allo scripting, il pavimento di lava si sarebbe adattato bene allo spazio coperto dalle piattaforme scomparse.
Inserisci un Part e spostalo nel tuo Mondo. Nome LavaFloor .
Ridimensionalo in modo che copra il pavimento dello Spaziodi chiusura.
Fai in modo che il pavimento assomigli più alla lava impostando la proprietà Material su Neon e la Color su un tono arancione.
Inserisci uno Script in una parte LavaFloor e rinominalo in Kill .
Rimuovi il codice predefinito e crea una variabile per la lava.
local lava = script.Parent
Connessione a un evento
Usa un evento per rilevare quando un utente tocca la lava. Ogni parte ha un evento Touched che si attiva quando qualcosa la tocca. Puoi connetterti a questo evento per eseguire una funzione quando si attiva.
Dichiarare una nuova funzione chiamata kill .
Accedi all'evento Touched sull'oggetto lava utilizzando un punto, proprio come una Proprietà: lava.Touched .
Chiama la funzione Connect sull'evento Touched, passando la funzione kill.
local lava = script.Parentlocal function kill()endlava.Touched:Connect(kill)
Qualsiasi codice che scrivi nella funzione kill ora eseguirà ogni volta che qualcosa tocca la lava. Nota che un colon viene utilizzato per la funzione Connect, non 1> un punto virgola1> - non preoccuparti del motivo in questo punto, basta ricordare la differenza.
Ottenere la parte toccante
Per uccidere l'utente, la funzione avrà bisogno di un oggetto associato a quell'utente. Un evento Touched della parte può fornire l' "altra parte" che l'ha toccata - ma solo se la richiedi facendo di essa un parametro della funzione.
I parametri sono definizioni di ciò che una funzione si aspetta di ricevere quando viene chiamata. Un parametro può essere utilizzato in una funzione come qualsiasi altra variabile. Puoi passare informazioni a un parametro includendolo nelle parentesi quando una funzione viene chiamata. I parametri sono definiti nelle parentesi nella prima riga di una funzione. Crea un parametro chiamato otherPart per la funzione <
local lava = script.Parent
local function kill(otherPart)
end
lava.Touched:Connect(kill)
Quando la funzione kill viene chiamata, il parametro otherPart rappresenterà la parte che ha toccato il pavimento di lava, e il codice che scriverai nella funzione sarà in grado di utilizzarlo.
Personaggio e Umanoidi
Quando un utente tocca la lava, Roblox può rilevare la parte specifica del corpo dell'utente che l'ha toccata, come la gamba sinistra o la gamba destra. Questa parte è nel modello di personaggio dell'utente, che contiene tutti gli oggetti che compongono l'avatar dell'utente nell'esperienza, tra cui:
- Le singole parti del corpo dell'utente come la testa, le membra e il torso.
- Qualsiasi abbigliamento e accessori indossati dall'utente.
- Il Humanoid, un oggetto speciale che contiene molte proprietà correlate all'utente, tra cui la salute dell'utente.
- Il HumanoidRootPart che controlla il movimento dell'utente.
Come notato in precedenza, qualsiasi parte del corpo che tocca la lava fa parte del modello Personaggio, quindi puoi ottenere un riferimento a quel personaggio con otherPart.Parent . Crea una variabile per memorizzare il padre della parte che ha toccato il pavimento di lava.
local lava = script.Parent
local function kill(otherPart)
local partParent = otherPart.Parent
end
lava.Touched:Connect(kill)
Dal modello di personaggio, dovrai ottenere l'oggetto Umanoid per uccidere l'utente. Puoi farlo con la funzione FindFirstChild() — passargli il nome della cosa che stai cercando e fornisce il primo figlio corrispondente che trova in quell'oggetto.
local lava = script.Parent
local function kill(otherPart)
local partParent = otherPart.Parent
local humanoid = partParent:FindFirstChild("Humanoid")
end
lava.Touched:Connect(kill)
Controllo del humanoid
Puoi facilmente controllare se il Humanoid è stato trovato utilizzando una dichiarazione se . Il codice in una dichiarazione se viene eseguito solo se la condizione definita nella prima riga è vera.
Ci sono una varietà di operatori che possono essere utilizzati per costruire condizioni più complicate che incontrerai in futuri corsi - per ora, basta mettere la variabile humanoid lì. Crea una dichiarazione if con 1> humanoid1> come condizione.
local lava = script.Parent
local function kill(otherPart)
local partParent = otherPart.Parent
local humanoid = partParent:FindFirstChild("Humanoid")
if humanoid then
end
end
lava.Touched:Connect(kill)
Impostare la salute del personaggio
Ora che il Humanoid è stato controllato, le sue proprietà possono essere modificate. Se impostate la sua proprietà Health su 0 , il personaggio associato muore. Nel corpo della dichiarazione if, impostate la proprietà 1>Health1> del personoid su 0.
local function kill(otherPart)
local partParent = otherPart.Parent
local humanoid = partParent:FindFirstChild("Humanoid")
if humanoid then
humanoid.Health = 0
end
end
lava.Touched:Connect(kill)
Con quello, il tuo pavimento lavico è completato! Prova la tua esperienza e dovresti trovare che la tua lava mortale uccide con successo gli utenti in Contattare. Prova ad usare la tua lava come una sfida extra in un Percorso ad ostacoli, o come un limite per un Mondo.
Codice finale
local lava = script.Parent
local function kill(otherPart)
local partParent = otherPart.Parent
local humanoid = partParent:FindFirstChild("Humanoid")
if humanoid then
humanoid.Health = 0
end
end
lava.Touched:Connect(kill)