AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  Connexion  

Partagez | 
 

 [Résolu] Déplacement et arrêt à la souris

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
diditigrou
Pas mal


Messages : 34

MessageSujet: [Résolu] Déplacement et arrêt à la souris   Mar 17 Nov 2015 - 17: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. Smile


Dernière édition par diditigrou le Mer 18 Nov 2015 - 16:48, édité 1 fois
Revenir en haut Aller en bas
Mobi
Utilisateur confirmé: Rang ****
avatar

Messages : 1256
Localisation : Dijon

MessageSujet: Re: [Résolu] Déplacement et arrêt à la souris   Mar 17 Nov 2015 - 17:48

Déjà quel est ton niveau avec game maker ?

tu utilises le drag and drop ou bien le code ?

_________________
Revenir en haut Aller en bas
diditigrou
Pas mal


Messages : 34

MessageSujet: Re: [Résolu] Déplacement et arrêt à la souris   Mar 17 Nov 2015 - 21: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.
Revenir en haut Aller en bas
Mass
*Excellent utilisateur*
avatar

Messages : 3324
Localisation : Dans une canonnière wookie.
Projet Actuel :
Wyvup
SpaceShift
Centauri-France


MessageSujet: Re: [Résolu] Déplacement et arrêt à la souris   Mer 18 Nov 2015 - 7: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 clinoeuil
Revenir en haut Aller en bas
http://madmass.mype.fr/CBNA/
Asu
Utilisateur confirmé: Rang ****
avatar

Messages : 895

MessageSujet: Re: [Résolu] Déplacement et arrêt à la souris   Mer 18 Nov 2015 - 13: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.
Revenir en haut Aller en bas
diditigrou
Pas mal


Messages : 34

MessageSujet: Re: [Résolu] Déplacement et arrêt à la souris   Mer 18 Nov 2015 - 16: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 Rolling Eyes).
Revenir en haut Aller en bas
Térence
Utilisateur confirmé: Rang *****
avatar

Messages : 2213
Localisation : Oui

MessageSujet: Re: [Résolu] Déplacement et arrêt à la souris   Mer 18 Nov 2015 - 19: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

_________________
Je suis partie sur les ailes du vent et la tempête m'a ramenée.
Revenir en haut Aller en bas
Mass
*Excellent utilisateur*
avatar

Messages : 3324
Localisation : Dans une canonnière wookie.
Projet Actuel :
Wyvup
SpaceShift
Centauri-France


MessageSujet: Re: [Résolu] Déplacement et arrêt à la souris   Jeu 19 Nov 2015 - 9:12

diditigrou a écrit:
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 Rolling Eyes).

Alors attention, si tu les déclares dans le "Creation code" de la room c'est une très mauvaise idée, il vaut mieux les déclarer dans l’événement Create de ton objet personnage, qui, comme son nom l'indique, est exécuté à sa création clinoeuil
Revenir en haut Aller en bas
http://madmass.mype.fr/CBNA/
Contenu sponsorisé




MessageSujet: Re: [Résolu] Déplacement et arrêt à la souris   

Revenir en haut Aller en bas
 
[Résolu] Déplacement et arrêt à la souris
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Le placement en congé de longue durée pour maladie au profit du Militaire.
» Arrêter de tirer son lait : quel impact sur le production de lait
» Arrêt de la Cour du Parlement de Bordeaux 1749
» Dois-je arrêter d'allaiter?
» Où s’arrêtera la connerie humaine....

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum Le CBNA :: Développement :: Entraide débutants-
Sauter vers: