Crea pericoli per i giocatori

*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.

In questo momento, i giocatori possono cadere da qualsiasi piattaforma senza conseguenze. Questa sezione ti guiderà nella creazione di un grande pericolo invisibile all'altezza dell'acqua nel tuo gioco. Quando un giocatore cade nel pericolo, la sua salute viene ridotta a zero e rinasce all'inizio del gioco.

Crea un pericolo d'acqua di base

Crea un pericolo d'acqua di base
In Workspace > World, crea una nuova cartella chiamata Hazards.
All'interno della cartella Hazards, crea un blocco Part chiamato Hazard con Size 825, 1, 576 e CFrame.Position 174, -6.5, 38 in modo che il pezzo copra l'acqua intorno all'isola e alle piattaforme.
Imposta Transparency a 1 in modo che il pezzo sia invisibile e l'acqua reale appaia come il pericolo, disabilita CanCollide in modo che i giocatori cadano attraverso di esso nell'acqua e abilita Anchored in modo che la fisica non lo muova.

Rileva quando i giocatori toccano il pericolo

Il pericolo non fa nulla finché non scrivi uno script che ascolta Touched e riduce la salute del giocatore a zero.

Crea HazardService
In ServerScriptService, crea uno Script chiamato HazardService con il seguente codice:
```lua
local Players = game:GetService("Players")
local Workspace = game:GetService("Workspace")
local hazardsFolder = Workspace.World.Hazards
local hazards = hazardsFolder:GetChildren()
local function onHazardTouched(otherPart)
local character = otherPart.Parent
local player = Players:GetPlayerFromCharacter(character)
if player then
local humanoid = character:FindFirstChildWhichIsA("Humanoid")
if humanoid then
humanoid.Health = 0
end
end
end
for _, hazard in hazards do
hazard.Touched:Connect(onHazardTouched)
end
```

Il HazardService ha molte somiglianze con il CoinService. Tuttavia, invece di raccogliere una moneta, la salute del giocatore viene impostata a 0 quando toccano un pericolo.

Sentiti libero di modificare, aggiungere o rimuovere oggetti pericolosi nel tuo gioco per creare ostacoli unici. Finché sono contenuti nella cartella Hazards, il ciclo di codice collega il gestore degli eventi a tutti i tuoi pericoli.

Collega al ciclo di vita del giocatore

Il ciclo di vita del giocatore rappresenta eventi che si verificano quando i giocatori interagiscono nel tuo gioco, come unirsi, lasciare o rinascere. Devi collegare i gestori a questi eventi per eseguire la logica per ciascun evento principale del ciclo di vita.

Aggiungi gestori del ciclo di vita a CoinService
In ServerScriptService, aggiungi il seguente codice in fondo allo Script CoinService esistente (non sostituire alcun codice esistente — aggiungi questo dopo):
```lua
local function onPlayerAdded(player)
-- Ripristina i gettoni del giocatore a 0
updatePlayerCoins(player, function(_)
return 0
end)
player.CharacterAdded:Connect(function(character)
-- WaitForChild fermerebbe il ciclo del giocatore, quindi quanto segue dovrebbe essere fatto in un thread separato
task.spawn(function()
-- Quando un giocatore muore
character:WaitForChild("Humanoid").Died:Connect(function()
-- Ripristina i gettoni del giocatore a 0
updatePlayerCoins(player, function(_)
return 0
end)
end)
end)
end)
end
-- Inizializza eventuali giocatori aggiunti prima di collegarsi all'evento PlayerAdded
for _, player in Players:GetPlayers() do
onPlayerAdded(player)
end
local function onPlayerRemoved(player)
updatePlayerCoins(player, function(_)
return nil
end)
end
Players.PlayerAdded:Connect(onPlayerAdded)
Players.PlayerRemoving:Connect(onPlayerRemoved)
```

Il codice definisce funzioni per ripristinare i conteggi delle monete durante gli eventi di ciclo di vita appropriati:

  • Players.PlayerAdded si attiva quando un giocatore si unisce al gioco e imposta il conteggio delle monete a 0.
  • Player.CharacterAdded si attiva quando il modello del personaggio di un giocatore viene aggiunto al mondo. Si verifica dopo PlayerAdded e ogni volta che il giocatore rinasce.
  • Humanoid.Died si attiva quando un giocatore muore e imposta il conteggio delle monete a 0. task.spawn() crea un thread separato per gestire questo, in modo che altri aspetti del ciclo di vita del giocatore possano essere eseguiti.
  • Player.PlayerRemoved si attiva quando un giocatore lascia il gioco per pulire lo stato del giocatore.
  • Questo codice contiene un potenziale problema in cui i giocatori potrebbero raccogliere monete prima che l'evento Players.PlayerAdded venga eseguito e poi avere i loro conteggi di monete ripristinati a zero. Per mitigare questo problema, considera soluzioni come la programmazione del codice o il blocco del personaggio del giocatore fino al termine dell'inizializzazione. Tuttavia, queste soluzioni comportano concetti di scripting più complessi che vanno oltre l'ambito di questo tutorial.

Prova di gioco

Seleziona Test dal menu a discesa e fai clic su Gioca. Raccogli alcune monete, quindi salta nell'acqua. Il tuo personaggio dovrebbe morire e rinascere all'inizio, con il conteggio delle monete ripristinato a 0.

© 2026 Roblox Corporation. Roblox, il logo Roblox e Powering Imagination sono tra i nostri marchi registrati e non registrati negli Stati Uniti. e altri paesi.