Crea pericoli per i giocatori

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


Attualmente, 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 blocco copra l'acqua intorno all'isola e alle piattaforme.
Imposta Transparency su 1 in modo che il blocco sia invisibile e l'acqua reale appaia come il pericolo, disabilita CanCollide affinché i giocatori cadano attraverso di esso nell'acqua e abilita Anchored affinché 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 un 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 similitudini con il CoinService. Tuttavia, invece di raccogliere una moneta, al giocatore viene impostata la salute a 0 quando tocca 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 gestori a questi eventi per eseguire logica per ogni evento principale del ciclo di vita.

Aggiungi gestori del ciclo di vita a CoinService

In ServerScriptService, aggiungi il seguente codice in fondo allo Script esistente di CoinService (non sostituire alcuno dei codici esistenti — 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 di gioco, quindi ciò di seguito dovrebbe essere eseguito 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 dei gettoni durante i giusti eventi del ciclo di vita:

  • Players.PlayerAdded si attiva quando un giocatore entra nel gioco e imposta il conteggio dei gettoni 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 dei gettoni a 0. task.spawn() crea un thread separato per gestirlo, quindi altri aspetti del ciclo di vita del giocatore possono essere eseguiti.
  • Player.PlayerRemoved si attiva quando un giocatore lascia il gioco per pulire lo stato del giocatore.
  • Questo codice contiene un problema potenziale in cui i giocatori potrebbero raccogliere gettoni prima che l'evento Players.PlayerAdded venga eseguito e poi avere i loro conteggi di gettoni ripristinati a zero. Per mitigare questo problema, considera soluzioni come la programmazione del codice o il congelamento 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 clicca su Gioca. Raccogli alcuni gettoni, poi salta nell'acqua. Il tuo personaggio dovrebbe morire e rinascere all'inizio, con il conteggio dei gettoni 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.