Crea pericoli per il giocatore

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


Gli oggetti di pericolo diminuiscono la salute dei giocatori quando li toccano.Come punto di partenza semplice, questa sezione del tutorial ti insegna a creare una grande parte invisibile allo stesso livello dell'acqua nella tua esperienza, in modo che cadere nel pericolo cambi la salute del Giocatorea zero e lo riporti all'inizio dell'esperienza.

Crea un pericolo idrico di base

Per creare il pericolo idrico di base:

  1. Nella finestra Explorer , aggiungi una nuova cartella nella cartella Mondo , quindi rinominala Pericoli .Assicurati che il nome sia scritto correttamente con la casistica corretta, altrimenti il codice non funzionerà.

  2. Nella cartella Pericoli , inserisci una parte blocco e rinominala Pericolo .

    Studio's Explorer window with the Hazard block Part highlighted under the Hazards folder.
  3. Sposta e scala la parte per coprire la linea d'acqua intorno all'isola e alle piattaforme.Ad esempio, il set di esperienza di esempio Island Jump - Scripting imposta Dimensione a 825, 1, 576 e CFrame.Position a 174, -6.5, 38 .

    A far out view of all of the cylinder sea stacks and the island. A large block part covers the water where a player could land if they fell from a sea stack.
  4. Seleziona la parte, quindi nella finestra Proprietà , configura le seguenti proprietà in modo che il pericolo sia invisibile e i giocatori possano passare attraverso di esso:

    • Imposta Trasparenza a 1. Questo rende l'insidia invisibile, in modo che l'acqua reale appaia come insidia.
    • Disabilita CanCollide .Questo dice al motore che altre parti possono passare attraverso il pericolo senza interruzioni, il che significa che i giocatori possono cadere attraverso il pericolo.
    • Abilita Ancorato .Questo dice al motore di non cambiare mai la posizione del pericolo a causa di qualsiasi simulazione legata alla fisica, il che significa che i giocatori possono toccare il pericolo senza influenzare la sua posizione.
  5. Crea un Script in ServerScriptService , quindi rinominalo in HazardService .

  6. Sostituisci il codice predefinito con il seguente codice:


    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 CoinService .Tuttavia, invece di raccogliere una moneta, il giocatore ha il loro set di salute a 0 quando tocca un pericolo.

    Sentiti libero di modificare, aggiungere or Inserireo rimuovere oggetti di pericolo nella tua esperienza per creare ostacoli unici.Fintanto che sono contenuti nella cartella Pericoli , il ciclo di codice connette il gestore eventi a tutti i tuoi pericoli.

Connetti al ciclo di vita del giocatore

Il ciclo di vita del giocatore rappresenta eventi che si verificano quando i giocatori interagiscono nella tua esperienza, come l'adesione, l'uscita o il respawn.Devi connettere i gestori a questi eventi per eseguire correttamente la logica per ciascun evento principale del ciclo di vita.Nello script CoinService , copia e pasta il seguente codice alla fine dello script:


local function onPlayerAdded(player)
-- Ripristina le monete del giocatore a 0
updatePlayerCoins(player, function(_)
return 0
end)
player.CharacterAdded:Connect(function(character)
-- WaitForChild interromperebbe il ciclo del giocatore, quindi qui sotto dovrebbe essere eseguito in un Filoseparato
task.spawn(function()
-- Quando un giocatore muore
character:WaitForChild("Humanoid").Died:Connect(function()
-- Ripristina le monete del giocatore a 0
updatePlayerCoins(player, function(_)
return 0
end)
end)
end)
end)
end
-- Inizializza qualsiasi giocatore aggiunto prima di connettersi 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 il conteggio delle monete durante gli eventi di vita appropriati:

  • Player.PlayerAdded brucia quando un giocatore si unisce all'esperienza e imposta il conteggio delle monete a 0 .
  • Player.CharacterAdded brucia quando viene aggiunto al Mondoil modello del personaggio di un Giocatore. Si verifica dopo PlayerAdded e ogni volta che il giocatore respawna.
  • Humanoid.Died brucia quando un giocatore muore e imposta il conteggio delle monete su 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 brucia quando un giocatore lascia l'esperienza per pulire lo stato del giocatore.
  • Questo codice contiene un potenziale problema in cui i giocatori potrebbero raccogliere monete prima dell'esecuzione dell'evento Players.PlayerAdded e poi avere il conteggio delle monete azzerato a zero.Per mitigare questo problema, considera soluzioni come la programmazione del codice o il congelamento del personaggio del Giocatorefino alla fine dell'inizializzazione.Tuttavia, queste soluzioni coinvolgono concetti di scripting più complessi che sono al di là della portata di questo Tutoriale.

Test di gioco

È tempo di vedere se il pericolo del giocatore funziona come previsto. Quando tocchi l'acqua, il tuo personaggio dovrebbe morire e perdere le sue monete. Per testare il tuo Gioco:

  1. Nella barra degli strumenti, fai clic sul pulsante Gioca . Studio entra in modalità playtest.

    Play button highlighted in Studio's playtesting options.
  2. Sposta il tuo personaggio per raccogliere alcune monete, quindi salta nell'acqua.Se i tuoi script funzionano correttamente, il tuo personaggio muore e il conteggio delle monete sulla classifica viene ripristinato su 0 .