Question

J'ai un corps en mouvement rapide (A) qui est dynamique. Il est censé entrer en collision avec un autre corps (B). A entre en collision avec B, mais parfois il passe le corps B sans collision. Ce comportement est tout à fait aléatoire. Je dois avoir cette collision. Guide de bien vouloir pourquoi il agit comme ça, au hasard.

Était-ce utile?

La solution

L'effet d'un objet passant à travers une autre raison de la grande circulation dans un seul pas de temps est appelé tunnel .

Box2D utilise la détection des collisions entre dynamique et continu statique objets pour résoudre ce problème. Cependant, votre boîtier (dynamique V.S. dynamique) n'est pas géré automatiquement, il est donc juste un dé hasard jeter si vos objets se trouvent dans des positions entrant en collision au moment précis où les collisions sont évaluées.

De la Box2d Manuel :

Normalement CCD n'est pas utilisé entre les organes dynamiques. Ceci est fait pour garder des performances raisonnables. Dans certains scénarios de jeu dont vous avez besoin des organismes dynamiques d'utiliser CCD. Par exemple, vous pouvez tirer une balle haute vitesse un empilement de briques dynamiques. Sans CCD, le tunnel pourrait bullet à travers les briques.

Les objets en mouvement rapide dans Box2D peuvent être étiquetés comme des balles. Les balles CCD effectuer à la fois statiques et dynamiques des corps. Vous devez décider quels organismes doivent être des balles en fonction de votre conception de jeu. Si vous décidez un corps doit être traité comme une balle, utilisez le paramètre suivant.

bodyDef.bullet = true;

Le drapeau de la balle ne touche que les corps dynamiques.

Box2D effectue une collision continue séquentielle, alors les balles peuvent manquer corps en mouvement rapide.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top