Faire suivre les ennemis un chemin déjà tracé "RESOLU"

Bonjour,

J’ai un soucis, j explique: J’ai un labyrinthe qui peut changer à chaque partie et j aimerai que les ennemis trouvent seul la sortie sans que le logiciel lague ( il y aura des dizaines d ennemis et le labyrinthe est assez long).
Du coup ma solution pour éviter ce gros lague a été de crée dans un premier temps un premier objet que j ai appelé “arbitre” qui lui cherchera la sortie de façon automatique et en meme temps il tracera une route pour guider plus tard les ennemis sans faire laguer le logiciel.
Pour la recherche du chemin et le traçage de la route j y suis arrivé il fait tout automatiquement( en utilisant le pathfinding mais j ai du rajouter des points d influences pour amener l objet plus loin d’où le lague) et pour le traçage l’arbitre créer tout les 250px une instance de l objet “spot_Chemin”. Mon problème maintenant c est de savoir comment faire suivre ce chemin bêtement par les ennemis sans faire laguer et j arrive pas à trouver.

Merci pour le retour

PS : le jeu est un Tower Défense

1 Like

Alors j ai trouvé peut etre 2 solutions que je testerais ce week end.

2 extensions : - links tool
- curved movement

Pour l instant je vois pas trop comment ça fonctionne et j espere surtout qu ils ne feront pas laguer le logiciel.

Bon du coup j ai essayé le “link object tool”, et je le trouve trop compliqué et pour le curve movement c est pas bon non plus, je n ai pas de courbe.

Mais j ai trouvé un tuto sur internet plutôt intéressant : https://www.youtube.com/watch?v=0QyGrcN3Z8o&ab_channel=GameGyani
de Game Gyani.

Mais j ai toujours un problème :sob: mon ennemis suit bien le trajet tracé mais il y en a qu un seul qui suit, les autres ne suivent pas. alors j essaye de bidouiller à droite et à gauche pour l adapter à mon jeu mais bon c est galère …

Pour l instant j en suis la : en dessous il y a que la partie où l arbitre crée des points pour l ennemies et la partie de l ennemies qui doivent suivre les points ( spote_chemin)

et là le résultat: Dessus on la ligne et les points noirs qui correspond à la recherche du chemin, et les cercles blancs qui sont crees tous les 250px par l arbitre ( carre kaki avec le warning) que les ennemis vont suivre.

Les problemes : Les ennemis sont en rouge
Sur cette image, le premier ennemi arrive bien jusqu en bas mais le second ne bouge pas d en haut

L’ autres probleme c est que si j envoie plusieurs ennemis en meme temps le premier ne va pas jusqu au bout et tout le monde s arrete au meme endroit

Et je suis sûr que le problème vient de la variable " compteur_marche", il y a un truc a faire!
Me rend fou !! :joy: :rofl:

Je me fais une mise a jour,
J ai réussi à tous les faire bouger jusqu’ en bas et c était en lien avec la variable “compteur_marche”. Ici la variable je l ai mise à 43 donc tous les ennemis vont jusqu au Spot_Chemin n°43.

Bon maintenant faut que je trouve une solution pour que la variable “compteur_marche” s adapte a tout type de labyrinthe. J ai essaye de lui mettre la variable “Compteur_Spot” pour que le nombre s adapte, mais ca marche pas. Les ennemis ne bougent plus dés le point de spawn.

c’est bon probleme resolu. Le probleme venait bien de la variable “compteur_marche” qui etait appliquée qu une seule fois pendant le jeu, j ai du mettre une variable d objet ( la premiere fois que je l utilise d ailleurs) et tout fonctionne, chaques ennemis générés possédent sa propre variable “compteur_marche”. Les ennemis suivent tous le chemin tracé par l arbitre.


1 Like

Bonjour Riverce,

Voici une solution possible pour faire suivre le chemin tracé par les ennemis dans votre jeu de Tower Defense :

1. Créez une variable d’instance pour chaque ennemi. Cette variable d’instance stockera la position du prochain point du chemin que l’ennemi doit atteindre.

2. Initialisez la variable d’instance à la position du premier point du chemin.

3. Dans la fonction de déplacement de l’ennemi, vérifiez la position de l’ennemi par rapport au point du chemin stocké dans la variable d’instance.

  • Si l’ennemi est à moins d’une certaine distance du point du chemin, passez au point du chemin suivant.
  • Sinon, continuez à déplacer l’ennemi vers le point du chemin actuel.

Voici un exemple de code pour la fonction de déplacement de l’ennemi :

function on_update(dt) { // Vérifiez la position de l’ennemi par rapport au point du chemin stocké dans la variable d’instance. var distance_au_point_du_chemin = get_distance_to(point_du_chemin);

// Si l’ennemi est à moins d’une certaine distance du point du chemin, passez au point du chemin suivant. if (distance_au_point_du_chemin < 100) { // Passez au point du chemin suivant. point_du_chemin = point_du_chemin.next; }

// Sinon, continuez à déplacer l’ennemi vers le point du chemin actuel. else { // Déplacez l’ennemi vers le point du chemin actuel. move_towards(point_du_chemin); } }

Cette solution permet de faire suivre le chemin tracé par les ennemis sans faire laguer le jeu, car elle ne nécessite pas de calculer le chemin à chaque frame. L’ennemi se contente de se déplacer vers le point du chemin stocké dans sa variable d’instance.

1 Like

Bonjour.

Merci je garde ta solution bien au chaud!