AccueilAccueil  FAQFAQ  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  Connexion  
-28%
Le deal à ne pas rater :
Brandt LVE127J – Lave-vaisselle encastrable 12 couverts – L60cm
279.99 € 390.99 €
Voir le deal

 

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

Aller en bas 
5 participants
AuteurMessage
diditigrou
Pas mal



Messages : 34

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


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


Messages : 1256
Localisation : Dijon

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

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

tu utilises le drag and drop ou bien le code ?

_________________
[Résolu] Déplacement et arrêt à la souris Penguin
Revenir en haut Aller en bas
diditigrou
Pas mal



Messages : 34

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


Messages : 3351
Localisation : Dans une canonnière wookie.
Projet Actuel : Monter des trucs et des machins

[Résolu] Déplacement et arrêt à la souris Empty
MessageSujet: Re: [Résolu] Déplacement et arrêt à la souris   [Résolu] Déplacement et arrêt à la souris EmptyMer 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 clinoeuil

_________________
Revenir en haut Aller en bas
http://madmass.mype.fr/CBNA/
Asu
Utilisateur confirmé: Rang ****
Asu


Messages : 895

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



Messages : 34

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


Messages : 2213
Localisation : Oui

[Résolu] Déplacement et arrêt à la souris Empty
MessageSujet: Re: [Résolu] Déplacement et arrêt à la souris   [Résolu] Déplacement et arrêt à la souris EmptyMer 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

_________________
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*
Mass


Messages : 3351
Localisation : Dans une canonnière wookie.
Projet Actuel : Monter des trucs et des machins

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





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

Revenir en haut Aller en bas
 
[Résolu] Déplacement et arrêt à la souris
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» déplacement case souris
» deplacement tactique avec la souris
» Deplacement en 2D Scrolling du personnage à la Souris (left-right)
» arret lors d'une collision. [résolu]
» [Résolu] Ralentir des backgrounds jusqu'à l'arret

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: