2016-12-25 2 views
4

Je crée un jeu en utilisant java et box2D (à partir de libgdx).Java et Box2D - Quel corps devrait être traité comme une balle?

En ce moment j'ai un problème, lorsque le corps rouge du soufflet d'image, à certains moments, il ne frappe pas la plate-forme (qui est aussi un corps dynamique), car il tombe avec une grande quantité de vitesse et la détection de collision n'est pas continue.

enter image description here

Ma question est, puisque les deux objet sont dynamiques et je veux vous assurer que la collision entre la plate-forme du corps rouge est détectée dois-je mettre les deux corps à corps de balles? Seul le corps rouge? Ou seulement la plate-forme?

Notes:

  • Le corps rouge tombe à une vitesse

  • très haute La plate-forme ne se déplace pas à une vitesse élevée

Nous vous remercions et Joyeux Noël !

+0

Je n'ai jamais utilisé (J) Box, mais en citant le manuel: * "Dans certains scénarios de jeu, vous avez besoin de corps dynamiques pour utiliser CCD.Par exemple, vous pouvez tirer une balle à grande vitesse à une pile de dynamique Sans la CCD, la balle pourrait traverser les briques. "* - Cela me semble exactement comme votre cas. Donc, si ** ça marche et que la performance est bonne, y a-t-il une raison pour que * non * les place tous les deux sur 'bullet'? – Marco13

Répondre

0

J'autoriserais le mode balle pour le corps rouge et laisserais le mode balle pour le corps de la plate-forme. Au moins dans le code CCD C++ de Box2D 2.3.2 (voir b2World::SolveTOI), tous les contacts pour l'étape de temps donnée seront examinés pour déterminer si le traitement CCD doit être effectué pour eux. Essentiellement, les contacts ayant un corps activé par balle ou ayant un corps non dynamique (un corps statique ou cinématique) continuent dans le processus CCD. Donc, moins les corps activés par balle, plus tôt cette méthode peut finir. En conséquence, il est moins optimal (algorithmiquement parlant) d'activer le mode balle sur le corps rouge et le corps de la plate-forme, bien que la différence de performance ne soit pas perceptible avec les 3 corps dessinés. Et étant donné que vous êtes seulement préoccupé par la collision entre le corps rouge et la plate-forme, l'activation d'une puce est suffisante pour que leur contact continue pour le traitement CCD. En ce qui concerne les raisons pour lesquelles je activerais le rouge (par opposition à la plate-forme), c'est parce que, comme vous le dites, ce sera le plus rapide des deux et cela correspond mieux dans mon esprit avec la balle concept. Notez que si - disons dans le futur - vous finissez avec plus de plates-formes et que les plates-formes elles-mêmes doivent être incapables de se passer les unes les autres mais vous les remarquiez en tunnel (même à leur plus faible vitesse), plates-formes (au lieu du corps rouge) serait la façon dont j'irais.