Page 1 sur 1

Collisions

Publié : lun. 31/oct./2005 19:08
par Anonyme
Voilà , je sais pas si vous connaissez la série des "Sonic" sur Mégadrive.
je voulais en fait savoir de quelle manière il ont fait pour coder leur système de collisions avec la gestion du personnage.
Pour faire des collisions avec des plans droit c'est simple, mais dès qu'il y a des plans incliné c'est autre chose...
Pour ma part je pense qu'il on utiliser la collision par pixel , mais cette commande est gourmande en mémoire donc j'ai des doutes.
Qu'en penser vous?

Publié : lun. 31/oct./2005 19:38
par djes
Il y a deux types de collision. La collision par bloc d'abord. Les blocs du sonic original font 32x32, ce qui permet une vitesse max de 31 pixels à la fois sans risque de "sauter" des blocs. Ensuite, quand sonic rencontre un bloc, il y a détermination du bloc à considérer (en fonction de la vitesse, sur quels bords), puis repositionnement du perso, au pixel près.

Publié : lun. 31/oct./2005 19:53
par comtois
je ne sais pas comment c'est fait dans sonic , mais j'avais fait des essais que tu peux trouver ici

http://perso.wanadoo.fr/comtois/sources ... lision.exe

je ne teste pas les pixels , c'est de la géométrie.

j'ai un vecteur vitesse pour la sphère ,que je combine avec la normale du plan. une fois que tu connais la normale du plan , tu peux déterminer le point de la sphère qui sera en contact avec le plan en cas de collision ( calcul de la distance).

Sinon , dans un exemple de plateforme 2D que j'avais commencé, il y a des marqueurs au bout des pieds du personnage pour gérer la pente, on sait qu'il faut relever le personnage ou le descendre selon les marqueurs en collision.

Publié : lun. 31/oct./2005 20:08
par Anonyme
Très intéressant Comtois, mais cela dois être gourmand en temps de calcul. sinon pour mon p'tit sonic je le gère aussi avec 8 points de controles autour du hérisson ^^.

Publié : lun. 31/oct./2005 20:30
par comtois
oh il y a très peu de calcul , et ça ne doit pas être plus gourmand que de faire du Pixel perfect. Mais c'est vrai que dans ton cas ,ce n'est peut-être pas utile.J'avais fait ça pour tester les procédures que je vais utiliser pour les collisions 3D.