[DB-AL] Problème de collision de 2 box collider

Pour les scripts écrits en C#
Règles du forum
Merci de respecter la NOMENCLATURE suivante pour vos TITRES de messages :

Commencez par le niveau de vos scripts
DB = Débutant
MY = Moyen
CF = Confirmé

Puis le domaine d'application
-RS = Réseau
-AL = Algorithmie

Exemple :

[DB-RS] Mouvement perso multijoueur
Avatar de l’utilisateur
nzoway
Messages : 12
Inscription : 12 Août 2018 11:08

[DB-AL] Problème de collision de 2 box collider

Message par nzoway » 22 Août 2018 10:48

Bonjour,
Je poste ce sujet car j'ai un gros soucis au niveau des collisions de deux objets, qui ont tous les deux une box collider et d'un rigid body. Ces deux sont placés sur un plane, et se déplacent grâce aux touches fléchées.

Lors d'une collision entre ces objets, l'un d'eux (ou les deux) s'envolent littéralement. Ce que je n'arrive pas à saisir c'est dans le code aucun effort n'est effectué sur l'axe Y et les deux objets sont tous deux à "plat" sur le sol.

Serait ce un bug ou un mauvais codage de mon script ?

Merci d'avance ;-)

Avatar de l’utilisateur
Max
Messages : 8764
Inscription : 30 Juil 2011 13:57
Contact :

Re: [DB-AL] Problème de collision de 2 box collider

Message par Max » 22 Août 2018 11:49

Bonjour,
nzoway a écrit :
22 Août 2018 10:48
Serait ce un bug...
je ne crois pas, pas de bug. Juste une gestion de la physique qui n'est jamais simple.
Poste le code de contrôle des objets ainsi qu'éventuellement leur inspector avec la partie physique (collider/rb) de visible.
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

Avatar de l’utilisateur
Liven
Messages : 268
Inscription : 30 Nov 2017 01:48

Re: [DB-AL] Problème de collision de 2 box collider

Message par Liven » 23 Août 2018 14:26

Pas de physics matérial avec une valeur de rebond délirantes par hasard ?

Une autre piste, des phénomènes comme ça peuvent se produire lorsqu'une collision fait "rentrer un collider dans un autre" par exemple si ta collision fait rentrer l'un (les deux) cube dans le plane, la physic va chercher à séparer le cube du plane et le fait parfois brutalement en appliquant une force aux objets non statics. Pour checker ça il faudrait que tu vérifie qu'à aucun moment (en fixedUpdate vu que c'est de la physics) tes cubes passent sous leur hauteur normale (et donc ne rentrent pas dans le plane).

Sinon tu dis que "tes" cubes se déplacent avec les flèches, donc les deux sont mobiles? Est ce que tu les déplace en leur appliquant des forces ou en modifiant directement la position de leur transform? Dans le cas où tu leur modifie la position cela peut rentrer en conflit avec la physic des rebonds car si tu force leur position (en les déplaçant l'un vers l'autre) et qu'ils commencent à un peut se "superposer" la physics va essayer de les séparer pendant que les touches demandent le contraire. Au bout d'un moment ça pète.

Question qui peut paraitre bête, mais tes cubes sont ils de la même taille (rapport à une éventuelle différence de hauteur dans leur centre de gravité) ?

Enfin tu peux essayer de bidouiller les "collision détection", les "interpolate" ou même les "constrains position" de tes rigidBody.

Et en cas de galère absolue, si jamais dans ton gameplay se serra toujours des objets qui déplacent sur un plan sans relief, il serait peut être judicieux de passer en physics2D (oui on peut utiliser la physics2D dans un projet 3D)

Répondre

Revenir vers « (C#) CSharp »