Alors, dans Box2D, je sais qu'il y a les Sensors pour ça, mais j'ai eu un petit pépin avec : j'ai pas compris comment on récupérait les infos d'un Sensor.
Ensuite, vu que j'ai qu'un seul objet qui bouge, je me suis pas fait chier. Je récupère "toutes" les collisions (haha, y'a qu'un boule qui collisionne) et ensuite je teste l'objet dont il s'agit (le b2Body) si le pointeur est égal à celui de la boule, c'est que c'est le bon. Enfin je vérifie la direction de la collision, ici par en dessous : (0.0, 1.0).
J'ai aussi surchargé l'opérateur == sur le b2Vec2 histoire de faire les comparaison plus facilement. (dans Common/b2Math.h)
En gros ça donne :
for(b2Contact * c = world->GetContactList(); c; c = c->GetNext()){
if (c->GetFixtureA()->GetBody() == ball || c->GetFixtureB()->GetBody() == ball){
b2WorldManifold man;
c->GetWorldManifold(&man);
if (man.normal == b2Vec2(0.0, 1.0)){
canJump = 3;
}
}
}