| [Résolu] Déplacement et arrêt à la souris | |
|
|
Auteur | Message |
---|
diditigrou Pas mal
Messages : 34
| Sujet: [Résolu] Déplacement et arrêt à la souris Mar 17 Nov 2015 - 18:17 | |
| Bonsoir, J'ai récemment pris en main Game Maker et je souhaite réalisé un modeste hack'n slash. J'ai décidé d'y aller petit à petit et je bloque déjà sur les déplacements. J'ai créé un objet " curseur" et celui-ci se déplace comme ma souris, jusque là pas de problème. J'ai ajouté le fait qu'un objet " croix" apparaisse à l'endroit où je clique, et là aussi c'est bon. Mon personnage se déplace bien en direction de la croix mais seulement ne s'arrête pas une fois au-dessus (avec la fonction : Move towards point). J'ai essayé d'écrire un code pour que l'objet " Héros" n'ait plus de vitesse une fois que ses coordonnées concordait avec la croix, cela n'a pas fonctionné. Avec la fonction Step towards point, cela fonctionne seulement si je reste appuyé sur mon bouton gauche de la souris. J'ai regardé un peu à droite et à gauche, je n'ai pas réussi à trouver. Si vous pouviez me débloquer, je suis preneur.
Dernière édition par diditigrou le Mer 18 Nov 2015 - 17:48, édité 1 fois |
|
| |
Mobi Utilisateur confirmé: Rang ****
Messages : 1256 Localisation : Dijon
| Sujet: Re: [Résolu] Déplacement et arrêt à la souris Mar 17 Nov 2015 - 18:48 | |
| Déjà quel est ton niveau avec game maker ?
tu utilises le drag and drop ou bien le code ? |
|
| |
diditigrou Pas mal
Messages : 34
| Sujet: Re: [Résolu] Déplacement et arrêt à la souris Mar 17 Nov 2015 - 22:05 | |
| Je suis un débutant.
J'utilise le drag and drop quand ce sont des choses simples mais je sens que cela va me bloquer pour certaines fonctionnalités que je souhaite implémenter. Le code va m'être indispensable je pense.
|
|
| |
Mass *Excellent utilisateur*
Messages : 3351 Localisation : Dans une canonnière wookie. Projet Actuel : Monter des trucs et des machins
| Sujet: Re: [Résolu] Déplacement et arrêt à la souris Mer 18 Nov 2015 - 8:14 | |
| Ton personnage a une vitesse (speed) qui vaut X. Cela signifie que lorsque tu utiliseras step_towards_points, à chaque frame (dépend de la vitesse de la room, de base 30 mais 60 c'est mieux) il va se déplacer de X pixels dans la direction donnée. Le soucis, c'est que quand tu fais un step_towards_point au clic, celui-ci n'est enregistré que pour la frame du clic. Ce qui veut dire qu'à la frame suivante, il ne sera plus là (vu qu'il n'y aura pas d’événement de clic dans cette frame), et ton personnage ne se déplacera pas. Dans cette situation, le plus simple est : (1) De mémoriser dans un jeu de variables la position du clic de souris, par exemple avec une variable go_x pour la coordonnée X et go_y pour la coordonnée Y. Au clic, il suffit alors de donner les coordonnées de la souris (mouse_x et mouse_y) à la bonne variable. (2) Utiliser Step : step est un événement qui sera exécuté à CHAQUE frame. C'est exactement ce qu'il faut pour exécuter un step_towards_point à chaque frame jusqu'à que le personnage arrive à la position visée. Il faut donc faire une condition qui, si les coordonnées du personnage (x et y) ne correspondent pas à ses coordonnées de destination (go_x et go_y), alors il exécute step_towards_point vers go_x et go_y à la vitesse X. Petite astuce : dans ces situations, j'ai souvent préféré raisonner en terme de distance entre la position du personnage et sa destination, qu'en terme d'égalité stricte des coordonnées. Si tu exécutes la fonction de déplacement tant que le personnage n'a pas atteint exactement sa destination, il y a un risque qu'il se mette à "tourner" autour du point d'arrivée faute de pouvoir se placer sur le pixel exact. Je ne sais pas si step_towards_point prévient ce genre de comportement ceci dit. En espérant t'être utile |
|
| |
Asu Utilisateur confirmé: Rang ****
Messages : 895
| Sujet: Re: [Résolu] Déplacement et arrêt à la souris Mer 18 Nov 2015 - 14:14 | |
| Pour pallier à ce problème, tu peux faire en sorte que si la distance entre le point à atteindre et ton objet est suffisamment faible alors on arrête de se déplacer. Tu peux utiliser un bloc if pour englober ton "move towards point" et qui vérifie la condition : - Code:
-
point_distance(x, y, croix.x, croix.y) > 16 point_distance est une fonction en GML qui permet d'obtenir la distance entre deux points prenant x1, y1, x2, y2 en pixels. Bref, le personnage se rapprochera de la croix jusqu'à être à 16 pixels de celle-ci. Tu peux réduire cette marge bien sûr. |
|
| |
diditigrou Pas mal
Messages : 34
| Sujet: Re: [Résolu] Déplacement et arrêt à la souris Mer 18 Nov 2015 - 17:48 | |
| Merci à vous deux. J'ai réussi (après m'être pris la tête pour rien, j'avais oublié de créer mes variables go_x et go_y dans ma room ). |
|
| |
Térence Utilisateur confirmé: Rang *****
Messages : 2213 Localisation : Oui
| Sujet: Re: [Résolu] Déplacement et arrêt à la souris Mer 18 Nov 2015 - 20:18 | |
| Autre astuce, si tu veux qu'il se place exactement au point précisé sans qu'il se mette à tourner autour, suffit de mettre ca pour l'argument speed : min(point_distance(x,y,go_x,go_y),vitesse) avec la valeur de vitesse que tu veux. Si tu veux économiser des ressources, t'englobe ton move_towards dans un if ou tu calcule toujours la distance, mais à la main : la fonction point_distance utilise des carrés et une racine, ca te bouffe du temps pour pas forcément grand chose, alors que la plupart du temps deux soustractions suffisent. 'fin c'est du détail ceci dit. Et bienvenue! edit: http://gamemaker.info/fr/manual <- très utile |
|
| |
Mass *Excellent utilisateur*
Messages : 3351 Localisation : Dans une canonnière wookie. Projet Actuel : Monter des trucs et des machins
| |
| |
Contenu sponsorisé
| Sujet: Re: [Résolu] Déplacement et arrêt à la souris | |
| |
|
| |
| [Résolu] Déplacement et arrêt à la souris | |
|