Messagerie


Identifier des objets actifs identiques dans le bon ordre

Elefterov
20 messages
Fusion 2.5
mardi 10 janvier 2017 à 22:29
Bonjour,

Je suis en train d'essayer de créer un jeu de course de voitures et je me trouve devant un petit écueil pour créer une sorte d'intelligence artificielle.
J'espère que ça va être clair.
[hr]
J'ai créé :

1- Un circuit : avec des tuiles "virages" et "lignes droites".
2- Un objet actif "Ombre de voiture" : va servir à la fois de hitbox et d'ombre pour la voiture (le futur objet voiture sera toujours quelques pixels au dessus de l'ombre pour donner une impression de relief).
3- Des objets actifs "Waypoints" tous identiques : indiquent à l'ombre la direction qu'elle doit prendre (elle se dirige toujours vers un Waypoint dont le Drapeau 0 est sur ON). Ils sont placés tout au long du circuit.
4- Un objet actif transparent "avant de la voiture" : permet d'activer le Waypoint suivant lorsque l'"avant de la voiture" entre en collision avec le Waypoint précédemment activé (le drapeau 0 du Waypoint suivant passe à ON tandis que le drapeau 0 de du Waypoint précédemment activé passe à OFF).
5- Des objets actifs transparents"Radar avant", "Radar gauche", "Radar droit", "Radar arrière gauche", "Radar arrière droit" : selon lequel est superposé au Waypoint activé, ils permettent à l'ombre de tourner (tout droit si superposition avec le "Radar avant", tourner de +/-1° si "radar gauche ou droit", tourner de +/-2° si "radar arrière" gauche ou droit).
6- Des tuiles invisibles "Indicateur de Vitesse" superposées aux tuiles du circuit : indiquent si l'ombre de la voiture doit accélérer ou ralentir lorsqu'elle leur est superposée.

Comme je n'arrivais pas à identifier les différents "Waypoints", j'ai créé des objets actifs "Waypoints" bien distincts (option Cloner objet), et ça fonctionne bien. Sauf que je dois faire un ligne pour chaque Waypoint :
- par exemple : collision entre "avant de la voiture" et "Waypoint 8"+ "Waypoint 8" le drapeau 0 est ON --> Fixer le drapeau 0 de Waypoint 9 à ON + Fixer le drapeau 0 de Waypoint 8 à OFF.
Et Il faudra une cinquantaine de Waypoints au moins pour le circuit complet... ??? C'est très très lourd et ça augmente le risque d'erreur.

J'ai ajouté le quantifieur "Porte" aux Waypoints pour symplifier les événements. Ça fonctionne pour définir la direction (chevauchement du radar avec le Waypoint qui a son drapeau ON) et la vitesse (chevauchement de l'ombre de la voiture avec les tuiles "Indicateurs de vitesse", combiné avec le chevauchement du radar avec le Waypoint qui a son drapeau ON).
[hr]
Par contre, quand je veux n'utiliser qu'un seul type d'objet "Waypoint" dupliqué, je n'arrive pas à utiliser le quantifieur pour définir quel Waypoint précis a son Drapeau sur ON. Car il faut bien que j'identifie chaque Waypoint.  J'ai essayé toute à l'heure d'utiliser une boucle en début de scène, pour répartir la valeur modifiable A, mais ça ne fonctionne pas.

--> Je me demande si on peut répartir une valeur modifiable dans un certain ordre (par exemple dans l'ordre défini par le circuit, c'est-à-dire que le premier Waypoint que doit atteindre la voiture doit avoir la variable A = 1 et que le dernier Waypoint doit avoir la variable A = 50 s'il y a 50 Waypoints sur le circuit) ?
Ce qui me permettrait d'identifier chaque Waypoint.
Xsoul
mardi 10 janvier 2017 à 23:17
méthode crade attention :p

Si tu ne veux vraiment utiliser qu'un seul waypoint (tu pourrais en utiliser plusieurs avec un qualifieur commun)
tu peux créer des objets, eux différents
Genre
A B C D etc qui ont tous un qualifieur X
et tu dis qu'en début de scène, pour chaque objet "qualifieur X", si l'objet est au dessus d'un waypoint, tu sets l'ID de ton waypoint à l'ID défini sur les objets de ton qualifieur X :D

C'est barbare mais ça marche
Patrice
2784 messages
Fusion 2.5 Dev Fusion 2.5
Firefly Exporteur UWP Exporteur iOS Exporteur Android Exporteur HTML5 Fusion 2.5+
mercredi 11 janvier 2017 à 06:50
Tu crée un actif avec un mouvement de cheminement qui en début de scène passe sur chaque waypoint dans l'ordre et distribué la bonne variable.
graboide
414 messages
Fusion 2.5 Dev
Fusion 2.5+ Exporteur UWP Exporteur iOS Exporteur Android Exporteur HTML5
mercredi 11 janvier 2017 à 07:11
Hello.
Une piste ... Quand tu duplique un objet depuis l editeur son identifiant s incrémente de 1, il te suffit de choisir le waypoint id+1 quand tu rentre en collision avec le précédent afin de t orienté vers le suivant . Cette méthode marche que si tu ajoute t es waypoint dans l éditeur à la suite, aucuns autres objets,
Sinon tu devrais en début de scène choisir les waypoint avec une boucle de l identifiant le plus petit au plus grand, et attribué une variable À sur chaque waypoint defenissant, l ordre ...
Cette seconde méthode demande que tu créer t es waypoint dans l ordre sinon ça marchera pas,
La plus simple reste la première ....
Elefterov
20 messages
Fusion 2.5
mercredi 11 janvier 2017 à 11:53
Merci pour vos réponses rapides ! J'ai essayé avec l'actif cheminement, qui me semble la méthode la plus simple au vu de mes compétences actuelles, et ça marche parfaitement ! En plus en centrant la vue dessus, ça permet de faire découvrir le circuit aux joueurs.
Et à priori je vais pouvoir faire facilement pareil avec d'autres voitures commandées par l'IA.

Je prend note des autres méthodes  :D
Patrice
2784 messages
Fusion 2.5 Dev Fusion 2.5
Firefly Exporteur UWP Exporteur iOS Exporteur Android Exporteur HTML5 Fusion 2.5+
dimanche 29 octobre 2017 à 15:20
Petit test rapide :)

Patrice
2784 messages
Fusion 2.5 Dev Fusion 2.5
Firefly Exporteur UWP Exporteur iOS Exporteur Android Exporteur HTML5 Fusion 2.5+
dimanche 29 octobre 2017 à 16:39
Voilà le principe : avec quelques capteurs et l'objet hiscore on peut facilement déterminer qui est devant qui.
Je dois pouvoir par conséquent facilement chronométrer le temps pour faire un tour pour chaque voiture:)

Elefterov
20 messages
Fusion 2.5
mercredi 9 mai 2018 à 22:33
Je me repenche dessus après une longue pose. J'avais réussi à faire rouler 2 IA en plus de la voiture du joueur, qui s'adaptaient en cas de collision, de changement de direction ou de passage sur une flaque l'huile. Le problème étant que j'ai dû définir des lignes de conduite IA pour chaque voiture, car je n'ai pas réussi à faire un système génétique qui marche. J'ai donc du créer des gabarits de mouvements distincts pour chaque voiture. Si je retrouve comment on fait, je mettrai le fichier en pièce jointe.

Merci Patrice, en effet je ne trouvais pas de solution pour indiquer l'ordre des voitures et le chrono, ça peut me donner quelques idées !
Kloug
1497 messages
Fusion 2.5
jeudi 10 mai 2018 à 12:38
Il existe une autre méthode.

Une IA pour 18 voitures, si cela peut aider?

Édit.:
Pour identifier les voitures, il suffit de répartir un valeur, ensuite à l'aide d'une collision on peut leur donner un ordre de passage.
On peut mettre des zones plutôt que des dizaines d'actifs pour changer de direction.
Sur une zone tous les (?) dixièmes de seconde, les voitures changent de direction.

Pièces jointes
Elefterov
20 messages
Fusion 2.5
vendredi 11 mai 2018 à 14:42
J'ai utilisé des zones pour déterminer la vitesse maximale des voitures, et une sorte de radar pour chaque voiture qui détecte des points de passages.
Les événements sont pas très propres, mais ça fonctionne.

Appuyer sur espace pour passer la revue du circuit.
Pièces jointes
Utilisateurs en ligne
  • Aucun utilisateur en ligne
  • 23 visiteurs au total

Derniers messages