Créer des dangers pour les joueurs

*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.


Actuellement, les joueurs peuvent tomber de n'importe quelle plateforme sans conséquence. Cette section vous guide dans la création d'un grand danger invisible à la même hauteur que l'eau dans votre jeu. Lorsqu'un joueur tombe dans ce danger, sa santé est réduite à zéro et il réapparaît au début du jeu.

Créer un danger d'eau de base

Créer un danger d'eau de base

Dans Workspace > World, créez un nouveau dossier nommé Hazards.
Dans le dossier Hazards, créez une pièce en bloc nommée Hazard avec une Taille de 825, 1, 576 et CFrame.Position de 174, -6.5, 38 afin que la pièce recouvre l'eau autour de l'île et des plateformes.
Définissez la Transparence à 1 afin que la pièce soit invisible et que l'eau réelle apparaisse comme le danger, désactivez CanCollide afin que les joueurs tombent à travers et dans l'eau, et activez Anchored pour que la physique ne la déplace pas.

Détecter quand les joueurs touchent le danger

Le danger ne fait rien tant que vous n'écrivez pas un script qui écoute Touched et réduit la santé du joueur à zéro.

Créer HazardService

Dans ServerScriptService, créez un Script nommé HazardService avec le code suivant :
```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
```

Le HazardService a de nombreuses similarités avec le CoinService. Cependant, au lieu de collecter une pièce, la santé du joueur est définie à 0 lorsqu'il touche un danger.

N'hésitez pas à modifier, ajouter ou supprimer des objets de danger dans votre jeu pour créer des obstacles uniques. Tant qu'ils sont contenus dans le dossier Hazards, la boucle de code connecte le gestionnaire d'événements à tous vos dangers.

Connecter au cycle de vie du joueur

Le cycle de vie du joueur représente les événements qui se produisent lorsque les joueurs interagissent dans votre jeu, tels que rejoindre, quitter ou réapparaître. Vous devez connecter des gestionnaires à ces événements pour exécuter la logique pour chaque événement de cycle de vie majeur.

Ajouter des gestionnaires de cycle de vie à CoinService

Dans ServerScriptService, ajoutez le code suivant à la fin du Script CoinService existant (ne remplacez aucun des codes existants — ajoutez cela après) :
```lua
local function onPlayerAdded(player)
-- Réinitialiser les pièces du joueur à 0
updatePlayerCoins(player, function(_)
return 0
end)
player.CharacterAdded:Connect(function(character)
-- WaitForChild arrêterait la boucle du joueur, donc ce qui suit doit être effectué dans un fil distinct
task.spawn(function()
-- Lorsque le joueur meurt
character:WaitForChild("Humanoid").Died:Connect(function()
-- Réinitialiser les pièces du joueur à 0
updatePlayerCoins(player, function(_)
return 0
end)
end)
end)
end)
end
-- Initialiser tous les joueurs ajoutés avant de se connecter à l'événement 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)
```

Le code définit des fonctions pour réinitialiser le nombre de pièces lors des événements de cycle de vie appropriés :

  • Players.PlayerAdded se déclenche lorsqu'un joueur rejoint le jeu et définit le nombre de pièces à 0.
  • Player.CharacterAdded se déclenche lorsque le modèle de personnage d'un joueur est ajouté au monde. Il se produit après PlayerAdded et chaque fois que le joueur réapparaît.
  • Humanoid.Died se déclenche lorsqu'un joueur meurt et définit le nombre de pièces à 0. task.spawn() crée un fil séparé pour gérer cela, afin que d'autres aspects du cycle de vie du joueur puissent s'exécuter.
  • Player.PlayerRemoved se déclenche lorsqu'un joueur quitte le jeu pour nettoyer l'état du joueur.
  • Ce code contient un problème potentiel où les joueurs pourraient collecter des pièces avant que l'événement Players.PlayerAdded s'exécute et voient ensuite leur nombre de pièces réinitialisé à zéro. Pour atténuer ce problème, envisagez des solutions telles que la planification de code ou le gel du personnage du joueur jusqu'à ce que l'initialisation soit terminée. Cependant, ces solutions impliquent des concepts de scripting plus complexes qui dépassent le cadre de ce tutoriel.

Test de jeu

Sélectionnez Test dans le menu déroulant et cliquez sur Jouer. Collectez quelques pièces, puis sautez dans l'eau. Votre personnage devrait mourir et réapparaître au début, avec son nombre de pièces réinitialisé à 0.

©2026 Société Roblox. Roblox, le logo Roblox et Powering Imagination font partie de nos marques déposées aux États-Unis et dans d'autres pays.