Orange73
Messages postés1375Date d'inscriptiondimanche 28 novembre 2004StatutMembreDernière intervention 2 août 2011
-
16 mars 2011 à 09:32
pegase31
Messages postés6138Date d'inscriptiondimanche 21 décembre 2003StatutModérateurDernière intervention 4 septembre 2013
-
16 mars 2011 à 15:15
Bonjour à tous,
Je suis confronté à un problème que j'arrive pas à résoudre.
Un Point nommé "p1" doit rejoindre un point nommé "p2", entre ces 2 points se trouve un obstacle.
Donc détection de la collision via hitTest() mais comment dire au "p1" de contourner cet obstacle ?
Merci par avance de votre aide.
-- Orange73 --
"L'homme n'est pas fait pour travailler, la preuve c'est que cela le fatigue" (Voltaire)
yasdar
Messages postés121Date d'inscriptionmercredi 12 janvier 2011StatutMembreDernière intervention19 mai 2012 16 mars 2011 à 10:54
c'est fou pourquoi tu veux que p1 rejoint p2 si un obstacle se trouve entre les deux points
bon ya deux cas qu'ils faut préciser :
- est ce que la distance p1-p2> obstacle.height et là c'est un mouvement de demi cercle
|
.p1 | .p2
|
- est ce que la distance p1-p2< obstacle.height et là cet un mouvement de translation avec 3 matrix de translations pour que p1 rejoint p2
|
|
.p1 | .p2
|
|
|
BBFUNK01
Messages postés1310Date d'inscriptionjeudi 16 juillet 2009StatutMembreDernière intervention20 juin 20146 16 mars 2011 à 11:12
Hello,
et pourquoi ne pas anticiper la collision plutôt que d'attendre la collision pour que p1 commence à éviter p2 ?
Par exemple en se basant sur les coordonnées de chacun des 2 points, tu peux essayer en définissant une zone de tolérance à partir de laquelle p1 commencerait à modifier sa trajectoire pour éviter p2.
A plus ,
BBFUNK01
//C'est en forgeant qu'on devient forgeron... ;-) ;
Vous n’avez pas trouvé la réponse que vous recherchez ?
BBFUNK01
Messages postés1310Date d'inscriptionjeudi 16 juillet 2009StatutMembreDernière intervention20 juin 20146 16 mars 2011 à 11:34
Re,
en fait il faut également éviter le second obstacle si je comprend bien, à savoir les 2 "piliers".
Par contre l'idée c'est que le bateau suive les contours d'un pilier s'il y a collision ou le mieux serait d'éviter la collision ?
Autrement je présume que le bateau aura x obstacles à éviter ?
Comment gères-tu le déplacement du bateau, par un enterFrame ?
BBFUNK01
//C'est en forgeant qu'on devient forgeron... ;-) ;
BBFUNK01
Messages postés1310Date d'inscriptionjeudi 16 juillet 2009StatutMembreDernière intervention20 juin 20146 16 mars 2011 à 12:33
Au 1er abord ça peut paraître plutôt simple mais en y réfléchissant je m'aperçois que ça l'est moins...
L'idée du hitTest() était logique mais le problème c'est que tu ne disposes pas des coordonnées de l'obstacle à l'instant T
pour organiser le contournement.
Peut-être qu'en stockant les coordonnées et la taille de chacun des obstacles dans un array il y aurait possibilité ensuite de gérer le contournement lors du hitTest() ? Le problème qui se pose alors c'est le "type" de déplacement qu'il faudra lancer tel que le disait Yasdar.
BBFUNK01
//C'est en forgeant qu'on devient forgeron... ;-) ;
Orange73
Messages postés1375Date d'inscriptiondimanche 28 novembre 2004StatutMembreDernière intervention 2 août 2011 16 mars 2011 à 14:18
Et surtant comment dans quelle direction faire ce déplacement, afin de trouver le bon chemin.
J'avais pensé à implémenter des "rescue point" au niveau des entrées ainsi si le bateau touche un obstacle, il est redirigé vers ce point de sauvetage.
pegase31
Messages postés6138Date d'inscriptiondimanche 21 décembre 2003StatutModérateurDernière intervention 4 septembre 201312 16 mars 2011 à 14:38
Ce que tu essaies de faire s'appelle un "pathfinder", c'est trés compliqué et il faut pour celà maîtriser les arbres, ainsi que les fonctions récursives ... perso j'ai laissé tomber.
pegase31
Messages postés6138Date d'inscriptiondimanche 21 décembre 2003StatutModérateurDernière intervention 4 septembre 201312 16 mars 2011 à 14:54
oui, c'est un peu ce que je voulais te dire...
Renseigne-toi sur les moteurs de calcul de chemin, appellés "pathfinder".
Ces principes permettent de calculer le chemin le plus cours et le moins "coûteux" en terme de trajet d'un point à un autre en prenant en compte les obstacles et autres terrains peu praticables.
Orange73
Messages postés1375Date d'inscriptiondimanche 28 novembre 2004StatutMembreDernière intervention 2 août 2011 16 mars 2011 à 15:12
Le A* nécessite également la quadrillage de la scene et de définir les zone ayant un obstacle, Alors que le positionement de "rescue point" à des endroits stratégique permettrai d'être moins complexe et pénible a mettre en place
-- Orange73 --
"L'homme n'est pas fait pour travailler, la preuve c'est que cela le fatigue" (Voltaire)