Comment détecter un clic sur un objet dans Game Maker
La suite de développement Game Maker de YoYo Games contient de nombreuses fonctions glisser-déposer pour la conception rapide de jeux. Cependant, une fonction notablement absente est celle qui permet de vérifier si un objet a été cliqué par la souris et d'exécuter des opérations en conséquence. Cette lacune peut être comblée facilement avec quelques lignes du langage de script intégré GML (Game Maker Language).
Création d'un objet cliquable
Étape 1
Créez un sprite : clic droit sur Sprites → Nouveau Sprite. Cliquez sur Éditer le sprite. Les sprites sont les images utilisées dans votre jeu. Double-cliquez sur la vignette pour ouvrir l'Éditeur d'images (type Paint). Dessinez un cercle rapide et cliquez sur la coche verte pour sauvegarder et fermer.
Étape 2
Créez un objet à partir de ce sprite : clic droit sur Objets → Nouvel Objet. Sélectionnez « sprite0 » comme sprite pour cet objet.
Étape 3
Cliquez sur Ajouter un événement → Souris → Clic gauche.
Désormais, à chaque clic gauche, tout objet possédant cet événement exécutera le code donné.
Étape 4
Cliquez sur l'onglet Control. Glissez l'icône Exécuter un morceau de code (ressemble à un bloc-notes) dans la zone d'actions. L'éditeur de code s'ouvre.
Étape 5
Collez le code suivant dans l'éditeur :
d = point_distance(mouse_x, mouse_y, self.x + (self.sprite_width/2), self.y + (self.sprite_height)/2)
if (d < self.sprite_width/2) {
instance_destroy()
}
D'abord, l'objet vérifie sa distance par rapport au pointeur de la souris et la stocke dans la variable « d ». Ensuite, si cette distance est inférieure à la moitié de la largeur du sprite, l'objet se détruit lui-même.
Cliquez sur les coches vertes pour sortir des éditeurs de code et d'événements.
Étape 6
Testez : clic droit sur Rooms → Créer une Room. Cliquez plusieurs fois dans la room pour créer des instances de votre objet. Cliquez sur la flèche verte pour lancer le jeu. Les cercles devraient disparaître quand vous cliquez dessus.
Astuce
Si vous utilisez Game Maker en « mode avancé » (optionnel), vous pouvez créer des familles d'objets qui héritent des fonctions de leurs parents. Cela permet, dans des jeux plus complexes, d'écrire la fonction « clic de souris » une seule fois et de la faire utiliser par tous les objets cliquables du jeu.
