Les boutons peuvent être utilisés par les joueurs pour déverrouiller de nouvelles zones, donner des points et révéler des trésors. Chaque fois qu'un joueur touche un bouton, il devrait donner un retour pour indiquer aux joueurs qu'il est en cours d'interaction, comme changer de couleur ou émettre des sons.
Dans cet exemple, le bouton sera utilisé pour activer un pont. Lorsque le bouton aura été pressé, il deviendra vert et les joueurs pourront utiliser le pont. Si le joueur n'a pas pressé le bouton, il tombera à travers le pont lorsqu'il tentera de marcher dessus.
Créer un pont
Commencez par configurer le pont.
Créez une zone dans votre environnement où les joueurs auront besoin d'un pont.
Créez une pièce pour le pont et renommez-la en Pont.
Sélectionnez le pont, dans la fenêtre Propriétés :
- Changez Transparence à .5. Pour la Transparence, 0 est visible, 1 est invisible.
- Cochez Ancré.
- Décochez PeutCollisionner.
Lorsque vous testez l'expérience, le pont devrait avoir un aspect brumeux et les gens ne devraient pas pouvoir marcher dessus pour l'instant.

Créer le bouton
Maintenant que le pont est configuré, créez le bouton.
Créez une nouvelle pièce nommée Bouton.
Changez la couleur du bouton en rouge.
Ancrez le bouton.
Déplacez le bouton pour qu'il flotte légèrement et ne touche rien. Cela permet de s'assurer que l'événement Touched ne se déclenche pas accidentellement.

Rendre le bouton interactif
Cette fois, au lieu d'utiliser l'événement Touched pour créer un piège, vous l'utiliserez pour créer un bouton qui rend le pont utilisable. Pour rendre le pont capable de collision, utilisez le code bridge.CanCollide = true dans une fonction personnalisée qui s'exécute lorsque le joueur touche le bouton. Vous connaissez tout le reste qu'il vous faut pour compléter les étapes suivantes.
Essayez de le comprendre par vous-même avant de regarder la solution de code.
- Insérez un nouveau script dans le bouton nommé ActiverPont.
- Supprimez Hello World.
- Créez des variables pour le pont et pour le bouton.
- Créez une fonction locale qui fait ce qui suit lorsque le bouton est touché :
- Imprime "button touched".
- Change la couleur du bouton de rouge à vert lorsqu'il est touché.
- Change la transparence du pont à 0 pour le rendre visible.
- Rends le pont utilisable en utilisant le code bridge.CanCollide = true
- Connectez la fonction à l'événement Touched du bouton.
- Testez le script et assurez-vous que le pont apparaît lorsque le bouton est touché.
Solution de code Voici une solution possible au code :
-- Insérez ce script dans le bouton
-- Transforme le bouton en vert lorsque quelque chose touche le bouton.
local button = script.Parent
local bridge = workspace.Bridge
local function buttonPressed()
print("button touched")
button.Color = Color3.fromRGB(0, 170, 0)
bridge.Transparency = 0
bridge.CanCollide = true
end
button.Touched:Connect(buttonPressed)
Dépanner votre code
Problème : Le pont est déjà solide lorsque l'expérience démarre. Assurez-vous que les pièces sont ancrées et qu'elles ne touchent rien. Les pièces pourraient toucher quelque chose, comme le terrain ou une autre pièce, et provoquer l'activation accidentelle de la fonction buttonPressed().
Problème : Vous obtenez une erreur dans la fenêtre de sortie disant : "Bridge is not a valid member of Workspace" Vérifiez les éléments suivants :
- Le nom de votre pont. Le pont dans votre script doit être nommé exactement comme dans l'Explorateur.
- Que part.Touched:Connect(buttonPressed) est en dehors de la fonction buttonPressed().
Défi de code optionnel
Le script dans cette leçon peut également être utilisé pour garder des portes qui empêchent les joueurs d'accéder à des zones spécifiques. Pratiquez vos compétences en programmation et faites ce qui suit :
- Créez une pièce de porte.
- Créez un bouton plus loin de la porte.
- Modifiez le script dans cette leçon pour qu'il fasse changer la transparence de la porte afin que le joueur ne puisse pas y entrer.
Votre version pourrait ressembler à ceci :
local button = script.Parent
-- Rappel : Remplacez le nom de la pièce, Porte, par celui de votre projet
local gate = workspace.Gate
local function buttonPressed()
print("button touched")
-- Change le bouton en rouge pour donner un retour au joueur
button.BrickColor = BrickColor.Red() -- CHANGEZ CECI
-- Rend la porte invisible
gate.Transparency = 1
-- Fait en sorte que le joueur puisse traverser la porte
gate.CanCollide = false
end
button.Touched:Connect(buttonPressed)