J’ai un problème pour réaliser quelque chose de très simple en apparence, et je suis étonné de rencontrer autant de difficultés pour le programmer sous Game Develop.
Je voudrais tout simplement imprimer un mouvement constant à un objet par un simple clic gauche… On clique gauche sur un objet de la scène, et il commence à avancer tout seul ; il existe déjà un jeu d’exemple qui y ressemble un peu : “SelectObjects”; quand on maintient le clic gauche sur l’un des chars, il devient vert… Et il redevient bleu quand on relâche.
Mais moi, je voudrais savoir comment on fait pour que le char reste vert même après qu’on relâche le bouton gauche de la souris. Dans mon projet, je veux établir un événement qui attribue une force d’angle à un objet (par exemple 0° et une longueur de 50 pixels) lorsqu’on clique gauche dessus, et qui conserve cette force de déplacement après le clic.
J’ai essayé plusieurs solutions en utilisant une variable, mais le problème que je rencontre est que, si j’utilise le couple de conditions “le bouton left de la souris est appuyé” et “le curseur est sur l’objet”, je vois avec le débugger que ma variable ne conserve pas la valeur que je lui attribue une fois que le bouton gauche est relâché… (mon objet avance bien quand le doigt reste appuyé, mais s’arrête dès qu’on relâche). C’est parfaitement logique, je ne dis pas le contraire, mais je n’arrive pas à trouver une solution qui fonctionne. Quelqu’un a une idée ?
Conditions : Le curseur est sur MonObjet
------------- Le bouton gauche de la souris est appuyé
Actions : Arrêter l’objet MonObjet
---------- Ajouter une force de … avec une dissipation de 1
L’important est d’utiliser une force avec une dissipation de 1, ce qui fait que la force va rester constante ( multipliée par 1 ), et de ne pas oublier d’arrêter l’objet avant d’ajouter la force, pour éviter d’ajouter accidentellement plusieurs forces à MonObjet.
Sinon, tu peux peut être essayer d’utiliser le modèle d’évènement “StrategyMovements”. Ce n’est sans doute pas ce que tu souhaite, mais ça permet de voir un peu comme gérer la sélection et le déplacement d’un objet à la souris comme dans un jeu de stratégie.
Effectivement, avec une dissipation amenée à 1 cela fonctionne… tout du moins quand on se limite à ce très petit exemple.
Malheureusement, cette solution ne règle pas le problème que je rencontre sur mon projet : une histoire d’objets qui viennent se placer automatiquement sur l’écran de jeu au moyen d’une variable d’objet “Apparition”, articulée autour d’un chronomètre et d’une variable de scène (en fait, je veux que le joueur puisse choisir l’un des deux objets qui apparaissent au moyen du clic gauche, et qu’il en découle une animation de l’objet choisi…) C’est tellement complexe que j’arrive plus bien à discerner à quel endroit pèche la logique de mon code…
Bref, je crois que j’ai intérêt à retravailler l’ensemble de cette section de ma scène. Je vais essayer d’employer des détecteurs ; puisque les détecteurs sont des objets, ils peuvent être créés, supprimés puis recréés suivant les besoins ; ils seront peut-être plus faciles à utiliser que des variables…
-Quand le titre doit arriver, je met sa variable “Apparition” à 1.
-Tant que sa variable apparition est à 1 et qu’il est en dessus une certains position Y, je le déplace vers le bas ( dissipation de 0 dans ce cas ).
-On peut éventuellement mettre sa variable “Apparition” à 0, même si c’était pas forcément utile ici.
Si un objet doit se diriger vers une position précise, tu peux donc essayer de lui appliquer une force quand sa variable Apparition est = à 1 et tant qu’il ne touche pas un objet servant de Detecteur de “fin de course”. Tu peux aussi tester sa position pour l’arrêter.