Dans Introduction au scripting, vous avez appris à faire des changements dans une expérience dans un boucle au fil du temps. Qu'est-ce qu'il se passe quand vous voulez faire des changements en fonction du comportement de l'utilisateur ? Dans ce tutoriel, vous apprendrez à faire un sol de lave mortel qui tue les utilisateurs lorsqu'ils s'y échauffent.
Mise en place
Vous avez besoin d'un endroit dans votre monde pour placer la lave mortelle. Si vous avez suivi le Introduction to Scripting cours, le sol de lave s'ajusterait bien dans l'écart couvert par les plates-formes disparantes.
Insérez un Part et déplacez-le dans votre monde. Nommez-le LavaFloor .
Redimensionnez-le pour couvrir le sol de l'espace de clôture.
Faites que le sol ressemble plus à de la lave en définissant la propriété Material à Neon et la couleur Color sur un 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
Connexion à 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 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 de lave en utilisant un point, tout comme une propriété : lava.Touched.
Applez la fonction Connect sur l'événement Touched, en passant la fonction kill.
local lava = script.Parentlocal function kill()endlava.Touched:Connect(kill)
Tout le code que vous écrivez dans la fonction kill courra maintenant chaque fois que quelque chose touche la lave. Notez que un colon est utilisé pour la fonction Connect, 1>non1> pas une virgule - ne vous inquiétez pas de pourquoi à ce moment, n'oubliez simplement la différence.
Obtenir la partie touchante
Pour tuer l'utilisateur, la fonction aura besoin d'un objet associé à cet utilisateur. Un événement Touched de la partie peut fournir l'« autre partie » qui l'a touchée - mais seulement si vous la demandez en la rendant un paramètre de la fonction.
Les paramètres sont des définitions de ce que les fonctions attendent de recevoir quand elles sont appelées. Un paramètre peut être utilisé dans une fonction juste comme n'importe quelle autre variable. Vous pouvez passer des informations à un paramètre en les incluant dans les parenthèses quand une fonction est appelée. Les paramètres sont définis dans les parenthèses sur la première ligne d'une fonction. Créez un paramètre appelé terminer</
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ésente 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 du corps spécifique de l'utilisateur qui l'a touchée, telle que la jambe gauche ou la jambe droite. Cette partie est dans le modèlisationde caractère de l'utilisateur, qui contient tous les objets qui composent l'avatar de l'utilisateur dans l'expérience, y compris :
- Les parties du corps individuelles de l'utilisateur telles que la tête, les membres et le torse.
- Toute vêtement et accessoire porté 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.
- La partie racine humanoïde qui contrôle le mouvement de l'utilisateur.
Comme précédemment noté, n'importe quelle partie du corps qui touche la lave fait partie du modèlisationde personnage, 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 de lave.
local lava = script.Parent
local function kill(otherPart)
local partParent = otherPart.Parent
end
lava.Touched:Connect(kill)
À partir du modèlisationde personnage, vous devrez obtenir l'objet Humanoïde pour tuer l'utilisateur. Vous pouvez le faire avec la fonction FindFirstChild() — il vous suffit de lui donner le nom de la chose que vous recherchez et il fournit le premier enfant correspondant trouvé dans cet objet. Appuyez sur <
local lava = script.Parent
local function kill(otherPart)
local partParent = otherPart.Parent
local humanoid = partParent:FindFirstChild("Humanoid")
end
lava.Touched:Connect(kill)
Vérification du humanoid
Vous pouvez facilement vérifier si le Humanoid a été trouvé en utilisant une déclaration if. Le code dans une déclaration if ne s'exécutera que si la condition définie dans la première ligne est vraie.
Il existe une variété de opérateurs qui peuvent être utilisés pour construire des conditions plus complexes que vous rencontrerez dans les cours futurs - pour le moment, placez simplement la variable humanoid ici. Créez une déclaration si avec 2>humanoid2> 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)
Paramètres de santé du personnage
Maintenant que le Humanoid a été vérifié, ses propriétés peuvent être modifiées. Si vous avez mis sa propriété Health à 0 , le personnage associé meurt. Dans le corps de la déclaration if, définissez la propriété 1>Health1> du personnage de l'héritage à 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 de lave est terminé ! Testez votre expérience et vous devriez trouver que votre lave mortelle tue les utilisateurs avec succès au contacter. 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)