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 baseDans 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 HazardServiceDans ServerScriptService, créez un Script nommé HazardService avec le code suivant :```lualocal Players = game:GetService("Players")local Workspace = game:GetService("Workspace")local hazardsFolder = Workspace.World.Hazardslocal hazards = hazardsFolder:GetChildren()local function onHazardTouched(otherPart)local character = otherPart.Parentlocal player = Players:GetPlayerFromCharacter(character)if player thenlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")if humanoid thenhumanoid.Health = 0endendendfor _, hazard in hazards dohazard.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 à CoinServiceDans ServerScriptService, ajoutez le code suivant à la fin du Script CoinService existant (ne remplacez aucun des codes existants — ajoutez cela après) :```lualocal function onPlayerAdded(player)-- Réinitialiser les pièces du joueur à 0updatePlayerCoins(player, function(_)return 0end)player.CharacterAdded:Connect(function(character)-- WaitForChild arrêterait la boucle du joueur, donc ce qui suit doit être effectué dans un fil distincttask.spawn(function()-- Lorsque le joueur meurtcharacter:WaitForChild("Humanoid").Died:Connect(function()-- Réinitialiser les pièces du joueur à 0updatePlayerCoins(player, function(_)return 0end)end)end)end)end-- Initialiser tous les joueurs ajoutés avant de se connecter à l'événement PlayerAddedfor _, player in Players:GetPlayers() doonPlayerAdded(player)endlocal function onPlayerRemoved(player)updatePlayerCoins(player, function(_)return nilend)endPlayers.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.