Dans Introduction à la script, vous avez appris comment effectuer des modifications dans une expérience dans une boucle au fil du temps. Que faire si vous souhaitez apporter des modifications basées sur le 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 placez-la dans votre monde. Nommez-la LavaFloor.
Redimensionnez-la pour qu'elle recouvre le sol de l'espace environnant.

Donnez au sol un aspect plus semblable à de la lave en réglant 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
Connectez-vous à un événement
Utilisez un événement pour détecter lorsqu'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 pourquoi à ce stade, retenez juste 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 devenir 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 lorsqu'une fonction est appelée. Les paramètres sont définis dans les parenthèses de 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 de lave, et le code que vous écrivez 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 l'expérience, y compris :
- Les parties individuelles du corps de l'utilisateur telles que la tête, les membres et le torse.
- 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, donc vous pouvez 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 de 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 la chose 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érifiez 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 des 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 expérience et vous devriez trouver que votre lave mortelle tue effectivement 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)