[RESOLU et programme à télécharge]déplacements des unités

Bon coucou tout le monde!!!

Je suis en train de faire un jeu de stratégie (où on dirige plusieurs unités).
Mais voilà je n’arrive pas à faire un déplacement correct. Je m’explique :
je souhaite que le joueur sélectionne des unités puis leurs donne l’ordre de ce déplacer à tel endroit. Puis qu’il puisse en sélectionner d’autres (en ayant déselectionné celles d’avant) et leur ordonner d’aller à un autre endroit. Mais voilà je n’y arrive pas!!! (c’est bête hein?)
J’ai essayé avec 2 méthode:

  • les unités ne se déplacent que SI elles sont sélectionnées mais voilà si je veux faire déplacer un autre groupe elles s’arrètent (je connais la raison).
  • les unités se déplacent vers un point créé (avec clic-gauche) après les avoir sélectionné et on peut les déselect. sans problème mais là re-problème : le second groupe (et tout les autres) sélectionné ne se déplace que vers le premier point créé :cry: .

J’ai pensé à faire 1 point par unités mais cela serai trop long et compliqué (trop lourd aussi).

Je précise que je n’ai pas de problème côté sélection (j’ai fait divers tests).

Je vous remercie d’avance si vous trouvez un solution et, bien sûr, si jamais j’y parviens seul je la donnerai car cela me semble compliqué.

Tu peux essayer d attribuer a ton point un numero aleatoire, et de mettre le meme aux unites a deplacer. Ensuite, pour chaque unite, tu verifie les points qui ont le meme numero que l unite, et tu dirige l unite vers le point

Bon je vais tester :slight_smile:

édit : bon je suis arrivé à faire pour la sélection et que l’unité se tourne vers le lieu de déplacement mais j’ai un problème. Je n’arrive pas à la faire se déplacer correctementr :cry: : de la manière dont j’ai fait l’unité se déplace vers l’objet cible (là ou elle doit aller) mais dès qu’il y en a plusieurs (alors qu’il n’y en a qu’une qui doit être prise en compte) l’unité s’arrèetent et ne bouge plus.
Je sais que le problème et que GD ne différencit pas les directions mais je n’arrive pas à lui faire “voir”.

screenshot des évènements :

ou sinon tu lui met une variable d’action
0=la cible attend les ordres
1=la cible est sélectionnée et en attente
2=la cible se déplace ver une position
donc tu clique sur ta cible qui se met en attente (1) et tu clique a un autre endroit (si tu utilise boutons droite et gauche c’est plus facile)
donc tu utilise le bouton droit du coup pour lui dire d’aller a cette position et tu enregistre la position x et y de cet instant dans la variable de ton unité x et y ensuite il se met a 2 et donc se déplace vers la valeur de la variable d’objet de l’objet unité
une fois arrivé tu lui remet ces trois variables a 0 et c’est repartit

résume
Lancement de la scéne
prendre en compte tout les objet unité mettre leur variable action(ou tu l’appelle comme tu veut)a 0

le boutton gauche de la souris est appuyé
et la souris est en position x et y de l’objet unité :exclamation: faire 1 a la variable action de l’objet unité

La variable action de l’objet unité est a 1 :exclamation: faire 2 a la variable action de l’objet unité
et le clic droit de la souris est appuyé :exclamation: faire =position x de la souris a la variable x de l’objet unité et
:exclamation: faire =position y de la souris a la variable y de l’objet unité

la variable de l’objet unité est a 2 :exclamation: “”“déplacer l’objet unité avec une force de (tu choisis) vers
valeur de la variable x d’objet unité en x et de la variable y
d’objet unité en y”""

l’objet unité a une position x et y égale a sa variable x et y :exclamation: faire 0 a la variable x y et action de l’objet unité

et c’est repartit
voila j’espère t’avoir aidé

euh aussi les smileys ils sont la pour séparer les actions des conditions car les espaces ne fonctionnaient pas

Mouaip ca peut marcher mais sans vouloi être méchant je sens qu’un truc cloche (car comme j’avais déjà teser un truc dans le genre :wink: )
En tout cas je vais voir ^^

édit : ok ca marche (moi j’avais dû avoir un problème alors… :unamused: ) et je n’ai qu’à soucis qui ne nuira qu’à la présentation du jeu mais que je suis en train d’essayer de résoudre : quand l’objet arrive au lieu requis ben il fait des demis-tours (car je n’arrive pas pour l’instant à lui demander de s’arrêter :smiley:)

UP!!! Je n’arrive pas ç résoudre mon problème : les unités ne s’arrètent pas quand elles arrivent à la destination voulue : elles font des aller-retour.

Je pensais en effet aussi a stocker la position vers laquelle se diriger dans des variables, c’est plus logique :slight_smile: pour ton probleme, tu verifie si la position x et y de l’objet sont proche de la position x et y du but, disons a 3 ou 4 pixels pres. Si oui, alors tu les fait passer dans l’etat arret.

Je n’arrive pas ç faire ce que tu as dit 4ian car les objets se déplcent vers une position qui leur est indiqué par 2 variabled’eux (des objets).
screenshoot :

Oui, mais il ne se deplacent pas toujours, hein ? Donc tu dois utiliser une variable, pour indiquer si ils sont en deplacement ou non. Tu la met alors a une valeur qui signifie qu’ils doivent s’arreter. Si tu n’en utilise pas, tu rajoute une variable et tu les deplaces uniquement si cette variable indique qu’ils doivent le faire.

Ben si ils se déplacent toujours. J’ai rajouté une variable déplacement mais ca n’a rien changé :

Regarde mes messages precedants, je te dis de verifier si l’objet est a 3 ou 4 pixels de la destination. En effet, qui te dit que l’objet va se deplacer pile poil a la destination, surtout avec une grande force ? Il faut donc que tu mette une marge d’erreur. pour cela, tu peux verifier : position X > destination X - 3 et position X < destination X + 3 et faire de meme en Y.

Ok ca marche avec une marge d’erreur de 10 pixels. Je fais le screenshot de la solution puis je le donne.
Et voilà :

Tu aurai pu te passer des variables Proche X et Proche Y, en integrant les tests directement dans le dernier evenement. Sinon, tu pourrai en faire un modele d’evenement, pour pouvoir permettre de recreer rapidement ce deplacement :slight_smile:

Oui je suis en train d’essayer de le simplifier et après j’en ferai un modèle que je partagerai :smiley:. Par contre j’ignore pourquoi mais si je n’utilise pas les variables proche X et proche Y ca ne marche pas (avec le débuggeur je sais que cela ne met pas la variable déplacement à 0).

Et voilà que le lendemain alors que je n’ai rien changé cela ne marche plus. Grâce au débeggeur je sais qu’il ne met pas pas proche X et proche Y =1 alors que les conditions sont remplis (vérifié au débuggeur). Franchement là ca me saoule parce que un truc qui marche avec des centaines de tests (je suis sèrieux) puis le lendemain ca ne marche plus… :angry:

T’a forcement du faire un changement… Fais un copier coller de tes evenements.

Voilà quand ca marchait :

Et voilà maintenant (marche plus) :

Peut-être qu’un truc m’a échappé mais je vois pas de différences (surtout que je n’avais pas enregistrer après que cela marchait).

Bizarre… T’es sur que le bouton gauche etait pas resté appuyé ? Que fait l’unité ?

Alors en faisant d’autres tests j’ai trouvé un truc :
Tout d’abord pour être clair j’ai 2 types d’unités, les “4x4” et les soldats.
Et voilà les unités s’arrètent que quand j’ai le premier 4x4x (le 4x4 0 pour gd) sélectionné. Le premier 4x4 est la première unité (de toutes les unités).
Déjà je trouve que ca avance mais, pourquoi cela fait cela :question: :question: :question: . :bulb: Peut-être qu’il ne comprend as de quelles unités je parle.

UP je n’arrive pas à réparer :cry: