In Introduzione alla programmazione, hai imparato come apportare modifiche in un'esperienza in un ciclo nel tempo. E se volessi apportare modifiche basate sul comportamento dell'utente? In questo tutorial, imparerai a creare un pavimento di lava mortale che uccide gli utenti quando ci camminano sopra.
Imposta
Hai bisogno di un posto nel tuo mondo dove mettere la lava mortale. Se hai seguito il corso di Introduzione alla programmazione, il pavimento di lava si adatterà perfettamente nel vuoto coperto dalle piattaforme che scompaiono.
Inserisci un Part e spostalo nella posizione nel tuo mondo. Chiamalo LavaFloor.
Ridimensionalo in modo che copra il pavimento dello spazio circostante.

Fai sembrare il pavimento più simile alla lava impostando la proprietà Material su Neon e il Color su una tonalità arancione.


Inserisci uno Script nel Part LavaFloor e rinominalo in Kill.

Rimuovi il codice predefinito e crea una variabile per la lava.
local lava = script.Parent
Connettersi 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 lo tocca. Puoi collegarti a questo evento per eseguire una funzione quando si attiva.
Dichiara una nuova funzione chiamata kill.
Accedi all'evento Touched sull'oggetto lava usando un punto, proprio come una proprietà: lava.Touched.
Chiama la funzione Connect sull'evento Touched, passando kill() come funzione da chiamare quando la parte viene toccata.
local lava = script.Parentlocal function kill()endlava.Touched:Connect(kill)
Qualsiasi codice scrivi nella funzione kill ora verrà eseguito ogni volta che qualcosa tocca la lava. Nota che viene utilizzato un due punti per la funzione Connect, non un punto - non preoccuparti del perché a questo punto, ricorda semplicemente la differenza.
Ottieni la parte toccata
Per uccidere l'utente, la funzione avrà bisogno di un oggetto associato a quell'utente. L'evento Touched di una parte può fornire la "parte altro" che lo ha toccato - ma solo se lo richiedi rendendolo 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 proprio come qualsiasi altra variabile. Puoi passare informazioni a un parametro includendolo nelle parentesi quando viene chiamata una funzione. I parametri sono definiti nelle parentesi sulla prima riga di una funzione. Crea un parametro chiamato otherPart per la funzione kill.
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 umanoide
Quando un utente tocca la lava, Roblox può rilevare la specifica parte del corpo dell'utente che l'ha toccata, come la gamba sinistra o il piede destro. Questa parte si trova nel modello Character dell'utente, che contiene tutti gli oggetti che compongono l'avatar dell'utente nell'esperienza, inclusi:
- Le singole parti del corpo dell'utente come la testa, gli arti e il torso.
- Qualsiasi abbigliamento e accessori indossati dall'utente.
- Il Humanoid, un oggetto speciale che contiene molte proprietà relative all'utente, inclusa la salute dell'utente.
- L'HumanoidRootPart che controlla il movimento dell'utente.
Come già notato, qualsiasi parte del corpo che tocca la lava fa parte del modello Character, quindi puoi ottenere un riferimento a quel personaggio con otherPart.Parent. Crea una variabile per memorizzare il genitore 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 del personaggio, avrai bisogno di ottenere l'oggetto Humanoid per poter uccidere l'utente. Puoi farlo con la funzione FindFirstChild() - basta passarle il nome della cosa che stai cercando e fornisce il primo figlio corrispondente che trova in quell'oggetto. Chiama FindFirstChild() sulla variabile partParent con "Humanoid" come figlio da trovare, e memorizza il risultato in una nuova variabile chiamata humanoid.
local lava = script.Parent
local function kill(otherPart)
local partParent = otherPart.Parent
local humanoid = partParent:FindFirstChild("Humanoid")
end
lava.Touched:Connect(kill)
Controlla l'umanoide
Puoi facilmente controllare se l'Humanoid è stato trovato usando un if statement. Il codice in un'istruzione if verrà eseguito solo se la condizione definita nella prima riga è vera.
Ci sono una varietà di operatori che possono essere utilizzati per costruire condizioni più complesse che incontrerai in corsi futuri - per ora, metti semplicemente la variabile humanoid lì. Crea un'istruzione if con humanoid 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)
Imposta la salute del personaggio
Ora che il Humanoid è stato controllato, le sue proprietà possono essere modificate. Se imposti la sua proprietà Health su 0, il Character associato muore. Nel corpo dell'istruzione if, imposta la proprietà Health dell'umanoide 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 questo, il tuo pavimento di lava è completo! Metti alla prova la tua esperienza e dovresti scoprire che la tua lava mortale uccide con successo gli utenti al contatto. Prova a utilizzare la tua lava come una sfida extra in un obby o come un confine 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)