Bonjour,
Cela fait un moment que j’essayé de perfectionner ma fonction qui me permet de tester les collisions entre deux box2D. « Pour un univers 2D »
Je m’explique.
Pour commencer voici le « Prototypes » de ma fonction.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 TCollideInfo Collision( CGeomBox boxA, Vector2D posA, Vector2D velA, CGeomBox boxB, Vector2D posB ) ; class CGeomBox { Vector2D v[4] ; }; class Vector2D { float x, y; };
Et voilà ce dont j’ai besoin qu’elle retourne:
- S’il y a collision
- La position du boxA si il y a collision (vecteur de direction + intensité du vecteur, pour pouvoir le déplacer à l’endroit adéquat)
- Quel coté est touché pour chacun des deux box.
Jusqu’à maintenant, je prenais mon boxA et je le déplaçais x fois le long de l’axe de la vitesse et faisais un test simple de collision avec le boxB pour chaque position, mais je trouve cette technique trop « barbare » et lente.
C’est pourquoi j’ai décidé de modifier mon code, et pour ce faire, j’ai cherché des solutions sur internet et j’ai pus alors trouver une solution adaptée « le AABB » et des exemples intéressant comme « PolyColly ».
Jusque que là, pas vraiment de problème, j’ai bien compris le principe de l’AABB pour faire un simple test de collision « qui est en fait le même que j’utilisais pour faire le test simple de collision, puisque ce sont des carrés ».
Alors qu’elle est le problème ?
Celui-ci réside surtout au niveau du test de collisions si l’on veut prendre en compte la vélocité du boxA, ce qui est en fait la partie que j’aimerais améliorer au niveau de ma fonction, « J’ai regardé l’exemple 3 de PolyColly, mais j’ai du mal à comprendre comment il s’y prend pour la vélocité ».
Merci pour votre aide.
PS : J’espère que j’ai posté sur la bonne section du forum.
Partager