|
Bas de page | |
---|---|
Auteur | Sujet : Système de collision |
Publicité | Posté le 15-03-2010 à 19:32:47 |
0x90 → | Commence par la méthode simple avant de tenter les facons plus complexes (uniquement utiles si t'as un grand nombre de billes).
--------------- Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck. |
0x90 → |
--------------- Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck. |
Kenelm |
Si la gestion des collisions est bien faite, y'a aucune raison que ça arrive. J'ai fait des animations de ce genre des tonnes de fois pour des projets à la con, j'ai jamais eu de problème franchement...
Ah non c'est un peu plus compliqué, vu qu'une collision peut en cacher une autre
|
0x90 → |
Message édité par 0x90 le 16-03-2010 à 17:21:09 --------------- Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck. |
0x90 → |
--------------- Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck. |
Kenelm |
Publicité | Posté le 16-03-2010 à 20:18:58 |
0x90 → |
--------------- Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck. |
alexandre_j | Voila, j'ai fini d'implémenter mon système et a part les bugs que vous avez cités, ça fonctionne plutôt bien.
Message cité 1 fois Message édité par alexandre_j le 25-03-2010 à 14:12:25 |
0x90 → |
--------------- Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck. |
alexandre_j |
|
0x90 → | dans ton isInCollisionWith, tu vérifie que les balles s'intersectent seulement ou aussi qu'elles vont bien l'une vers l'autre ? Si tu oublie la seconde condition, des billes qui s'intersectent mais qui sont entrain de se séparer l'une de l'autre, par exemple suite à un choc imparfaitement résolu à la frame d'avant, vont être considérées comme encore en collision, le faux choc va être résolu et va inverser leur direction, elles vont se foncer de nouveau l'une vers l'autre et augmenter leur intersection, il y aura une résolution qui va ensuite les écarter, mais pas assez pour qu'elles cessent de s'intersecter, et le truc va former une grappe petit à petit... Message cité 1 fois Message édité par 0x90 le 25-03-2010 à 16:29:50 --------------- Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck. |
alexandre_j |
Message cité 1 fois Message édité par alexandre_j le 25-03-2010 à 17:10:00 |
0x90 → |
Tu peux enlever le sqrt et compare la distance au carré de la somme des rayons, l'optimisation c'est pas prioritaire mais cette modification est ultra-courante (les sqrt c'est vachement lourd). Niveau style, bah chacun ses gouts, mais les accesseurs pour x et y ainsi que les "this->" superflus ça alourdit vachement la lecture et dans tes grandes boucles, n'hésite pas à faire un const Ball ball = balls_.at(i) pour alléger. Et les commentaires qui disent exactement la même chose que le nom de la fonction ça sert à rien. Si tu le sens, tu peux tenter de convertir ton code en remplaçant tout les x et y par une "struct point {float x, y; }" avec les opérateurs -, +, -=, +=, =, dotProduct(point b), crossProduct(point b), squaredLength() et length(). Ton code sera nettement plus court (finit les copier/coller de la même ligne pour x et y), et en bonus il suffira presque de rajouter z dans ta structure pour que le code marche aussi en 3D. Message cité 2 fois Message édité par 0x90 le 25-03-2010 à 17:37:28 --------------- Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck. |
alexandre_j |
|
bjone Insert booze to continue |
|
0x90 → |
Message édité par 0x90 le 25-03-2010 à 18:17:34 --------------- Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck. |
Publicité | Posté le |