Dans Introduction à la programmation, vous avez appris à apporter des modifications dans un jeu dans une boucle au fil du temps. Que faire si vous souhaitez apporter des modifications en fonction du comportement de l'utilisateur ? Dans ce tutoriel, vous apprendrez à créer un sol en lave mortelle qui tue les utilisateurs lorsqu'ils marchent dessus.
Configuration
Vous avez besoin d'un endroit dans votre monde pour mettre la lave mortelle. Si vous avez suivi le cours Introduction à la programmation, le sol en lave s'intégrerait parfaitement dans l'espace couvert par les plateformes qui disparaissent.
Insérez une Part et déplacez-la à sa place dans votre monde. Nommez-la LavaFloor.
Redimensionnez-la pour qu'elle couvre le sol de l'espace environnant.

Faites en sorte que le sol ressemble davantage à de la lave en définissant la propriété Material sur Neon et la Color sur une teinte orange.


Insérez un Script dans la partie LavaFloor et renommez-le en Kill.

Supprimez le code par défaut et créez une variable pour la lave.
local lava = script.Parent
Connecter à un événement
Utilisez un événement pour détecter quand un utilisateur touche la lave. Chaque partie a un événement Touched qui se déclenche lorsque quelque chose la touche. Vous pouvez vous connecter à cet événement pour exécuter une fonction lorsqu'il se déclenche.
Déclarez une nouvelle fonction appelée kill.
Accédez à l'événement Touched sur l'objet lave en utilisant un point, tout comme une propriété : lava.Touched.
Appelez la fonction Connect sur l'événement Touched, en passant kill() comme fonction à appeler lorsque la partie est touchée.
local lava = script.Parentlocal function kill()endlava.Touched:Connect(kill)
Tout code que vous écrivez dans la fonction kill s'exécutera désormais chaque fois que quelque chose touche la lave. Notez qu'un deux-points est utilisé pour la fonction Connect, pas un point - ne vous inquiétez pas pour le pourquoi à ce stade, retenez simplement la différence.
Obtenir la partie touchée
Pour tuer l'utilisateur, la fonction aura besoin d'un objet associé à cet utilisateur. L'événement Touched d'une partie peut fournir la "autre partie" qui l'a touchée — mais seulement si vous le demandez en le faisant un paramètre de la fonction.
Les paramètres sont des définitions de ce qu'une fonction s'attend à recevoir lorsqu'elle est appelée. Un paramètre peut être utilisé dans une fonction tout comme n'importe quelle autre variable. Vous pouvez passer des informations à un paramètre en l'incluant dans les parenthèses lors de l'appel d'une fonction. Les paramètres sont définis dans les parenthèses sur la première ligne d'une fonction. Créez un paramètre appelé otherPart pour la fonction kill.
local lava = script.Parent
local function kill(otherPart)
end
lava.Touched:Connect(kill)Lorsque la fonction kill est appelée, le paramètre otherPart représentera la partie qui a touché le sol en lave, et le code que vous écrirez dans la fonction pourra l'utiliser.
Personnage et humanoïde
Lorsqu'un utilisateur touche la lave, Roblox peut détecter la partie spécifique du corps de l'utilisateur qui l'a touchée, comme la jambe gauche ou le pied droit. Cette partie se trouve dans le modèle Character de l'utilisateur, qui contient tous les objets qui composent l'avatar de l'utilisateur dans le jeu, y compris :
- Les parties individuelles du corps de l'utilisateur telles que la tête, les membres et le torse.
- Tous les vêtements et accessoires portés par l'utilisateur.
- Le Humanoid, un objet spécial qui contient de nombreuses propriétés liées à l'utilisateur, y compris la santé de l'utilisateur.
- Le HumanoidRootPart qui contrôle le mouvement de l'utilisateur.
Comme mentionné précédemment, toute partie du corps qui touche la lave fait partie du modèle Character, vous pouvez donc obtenir une référence à ce personnage avec otherPart.Parent. Créez une variable pour stocker le parent de la partie qui a touché le sol en lave.
local lava = script.Parent
local function kill(otherPart)
local partParent = otherPart.Parent
end
lava.Touched:Connect(kill)À partir du modèle de personnage, vous devrez obtenir l'objet Humanoid afin de tuer l'utilisateur. Vous pouvez le faire avec la fonction FindFirstChild() — il suffit de lui passer le nom de ce que vous recherchez et elle fournit le premier enfant correspondant qu'elle trouve dans cet objet. Appelez FindFirstChild() sur la variable partParent avec "Humanoid" comme enfant à trouver, et stockez le résultat dans une nouvelle variable appelée humanoid.
local lava = script.Parent
local function kill(otherPart)
local partParent = otherPart.Parent
local humanoid = partParent:FindFirstChild("Humanoid")
end
lava.Touched:Connect(kill)Vérifier l'humanoïde
Vous pouvez facilement vérifier si l'Humanoid a été trouvé en utilisant une instruction if. Le code dans une instruction if ne s'exécutera que si la condition définie dans la première ligne est vraie.
Il existe une variété d'opérateurs qui peuvent être utilisés pour construire des conditions plus complexes que vous rencontrerez dans les cours futurs - pour l'instant, mettez simplement la variable humanoid là. Créez une instruction if avec humanoid comme condition.
local lava = script.Parent
local function kill(otherPart)
local partParent = otherPart.Parent
local humanoid = partParent:FindFirstChild("Humanoid")
if humanoid then
end
end
lava.Touched:Connect(kill)Définir la santé du personnage
Maintenant que le Humanoid a été vérifié, ses propriétés peuvent être modifiées. Si vous définissez sa propriété Health à 0, le Character associé meurt. Dans le corps de l'instruction if, définissez la propriété Health de l'humanoïde à 0.
local function kill(otherPart)
local partParent = otherPart.Parent
local humanoid = partParent:FindFirstChild("Humanoid")
if humanoid then
humanoid.Health = 0
end
end
lava.Touched:Connect(kill)Avec cela, votre sol en lave est complet ! Testez votre jeu et vous devriez constater que votre lave mortelle tue avec succès les utilisateurs au contact. Essayez d'utiliser votre lave comme un défi supplémentaire dans un obby, ou comme une limite pour un monde.
Code final
local lava = script.Parent
local function kill(otherPart)
local partParent = otherPart.Parent
local humanoid = partParent:FindFirstChild("Humanoid")
if humanoid then
humanoid.Health = 0
end
end
lava.Touched:Connect(kill)