Menu
EtoileAbonnementRSS
jeuxvideo.com  /  Tous les forums  /  Forum principal Informatique  /  Forum Création de Jeux  / 

Topic Moteur physique et rebonds

Sujet : Moteur physique et rebonds

1
perl1p1p1
perl1p1p1
MP
21 septembre 2019 à 22:12:05

Voilà, j'essaie de faire une copie du jeu Haxball pour ceux qui connaissent.

J'arrive à faire rebondir une balle sur les parois comme dans un jeu de billard en revanche je bloque sur un truc que je sais même pas nommer correctement ce qui empêche de faire une recherche pertinente sur internet. Et du coup je suis là. :ok:

Donc voilà, comment on fait GLISSER un cercle en mouvement sur un cercle statique, dans le cas de Haxball par exemple il s'agit du joueur sur le poteau. Je veux pas de rebond dans ce cas là, je veux que le joueur bute et glisse sur le poteau en le contournant. Comment on fait ?

Et pour aller plus loin, comment on fait pour pousser la balle avec le joueur ? Et dans le cas d'une collision joueur en mouvement - joueur en mouvement (cercle - cercle donc), là aussi les joueurs glissent et ne rebondissent pas. :(

J'ai des bouquins sur comment construire un moteur physique 2D mais ces cas-là ne semblent pas renseigner. Je veux bien des liens ou des mots-clés. :ange:

zebtorax
zebtorax
MP
21 septembre 2019 à 23:44:23

J'ai eu un problème assez similaire il y a très longtemps, je suis pas certain de ce que je vais dire mais c'est une piste à suivre en attendant que quelqu'un passe te donner la solution.
Je crois que c'est un problème de collision. Il faut pas une collision qui repose sur un point mais plutôt sur un vecteur (donc plusieurs points donc une arrête de polygone) pour que ça glisse.
Donc il faut non pas une boxe géométrique (de type capsule ou autre) mais une boîte qui colle à tous les polygones de ton objet. Voir non pas à base de polygones mais à base de triangles (sachant qu'un polygone contient plusieurs triangle, sauf un polygone triangle qui n'en contient qu'un) pour encore plus de précision.

ThetaTauTau
ThetaTauTau
MP
22 septembre 2019 à 00:16:50

Pour moi la solution la plus simple ça serait simplement de "pousser" les objets qui se chevauchent.

Si on a 2 objets a et b, avec des cercles comme colliders, de rayon Ra et Rb et de centre Ca et Cb, respectivement. Soit Dab la distance entre Ca et Cb.

Si Dab < Ra + Rb (collision détectée)

Si b est fixe alors on déplace a du vecteur suivant :
(Ca-Cb)*(Ra+Rb)/Dab
Si a et b sont mobiles alors on déplace a de la moitié de cette valeur et b de - la moitité de cette valeur. Si les objets ont des masses différentes on peut pondérer plutôt que de faire moitié moitié.

Est ce que ça réponds à ta question?

Lapintade
Lapintade
MP
22 septembre 2019 à 00:37:22

en regardant une video du jeu que tu mentionnes ( https://www.youtube.com/watch?v=lmmSxlZ9Dos ) je dirai qu'il y a un systeme d'attraction de la balle pour qu'elle reste "collé" a la boule du joueur. C'estun moteur physique donc forcement si tu veux raisonner en pure physique, il faut trouver un systeme pour etre en mode "je colle" la balle. Elle pourra glisser le long de ton cercle. Perso j'ajouterai un lien entre les deux entités. Ainsi il y aurait une contraite qui ferait qu'elle resteront toujours a la meme distance (taille du lien = somme des deux rayons) mais que ca peut tourner l'un autour de l'autre (reglage du frottement et de la friction). Quand tu veux que la balle soit lancée a nouveau, tu supprime ce lien.
Dans le moteur Box2D ca s'appelle "Distance joint' par exemple.

1
Répondre
Prévisu
?
Victime de harcèlement en ligne : comment réagir ?
Infos 0 connecté(s)

Gestion du forum

Modérateurs : Lapintade
Contacter les modérateurs - Règles du forum

Sujets à ne pas manquer

Boutique
FIFA 20 - Standard Edition Amazon 44,99€
The Legend of Zelda: Link's Awakening Amazon 41,99€
Nintendo Switch avec paire de Joy-Con Rouge Néon et Bleu Néon Amazon 299,98€