[Resolu] Collider 2D dans monde 3D

Questions techniques liées à l’utilisation d'Unity (et n'entrant pas dans le cadre d'une des sections suivantes)
Doucky
Messages : 8
Inscription : 03 Mars 2017 18:20

[Resolu] Collider 2D dans monde 3D

Message par Doucky » 03 Avr 2017 22:42

Hello,

Je suis en train d'essayer de creer un FPS sur unity et après avoir coder un système d'arme qui tire des projectiles, j'aimerais développer mon système de visée.
Pour ce faire, j'ai créé un plan sur lequel j'ai placé une image de cible. l'idée est que lorsqu'un projectile est tirée dans le centre de la cible, je marque 50 points, et s'il est tiré en périphérie de la cible, je marque 1 point. Sur ce plan j'ai commencé à définir des "collider circle 2D" de différentes tailles afin de détecter où le projectile, que j'ai tiré via mon arme, impacte sur la cible. Bien évidemment il suffit de lire la doc pour savoir que les collider 2D ne fonctionnent qu'avec des éléments 2D, ce qui n'est pas le cas de mon projectile 3D...

Et heu du coup.. comment détecte on une collision entre un élément 2D et un élément 3D ? 8/
Existe il un système tel que le Raycast qui permet de détecter la collision et d'avoir plein d'info sur cette dernière ?
Dernière édition par Doucky le 09 Avr 2017 17:45, édité 1 fois.

Farstone
Messages : 187
Inscription : 04 Déc 2016 09:38

Re: Collider 2D dans monde 3D

Message par Farstone » 04 Avr 2017 08:10

Je comprend pas trop, tu dit que tu fait un FPS et arrête moi si je me trompe, tu veux une cible pour tester ton système de tir, pourquoi ne pas prendre tout simplement un cube avec une texture de cible, pourquoi utiliser de la 2D, surtout dans un fps ?

Avatar de l’utilisateur
evereal
Messages : 109
Inscription : 06 Nov 2015 18:46

Re: Collider 2D dans monde 3D

Message par evereal » 04 Avr 2017 08:22

Et non on utilise pas les elements 2D et les elements 3D, prend juste un cylindre 3D avec une petite hauteur
“La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi. Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et personne ne sait pourquoi !”

Doucky
Messages : 8
Inscription : 03 Mars 2017 18:20

Re: Collider 2D dans monde 3D

Message par Doucky » 04 Avr 2017 08:45

Merci pour les réponses,

Twiixi : Admettons, disons que j'utilise un cube, sur l'une des face du cube, je peint une cible, le problème reste le même, comment détecte on l'endroit d'impact de la balle (projectile) sur la face du cube sur laquelle j'ai peint la cible ?

Evereal : tu as très bien saisi le problème. En ce qui concerne le cylindre de petite épaisseur, ce fut ma première idée mais le cylindre n'existe pas en forme primitive de collider. Et ceci car il est de loin non optimisé en terme de puissance de calcul (pour une cible ça va, mais si je veux répéter ce schéma sur d'autre partie de mon jeu plus tard cela sera ennuyeux).
A moins que tu me dises que l'on puisse designer soit même ses collider avec du code ?

Avatar de l’utilisateur
evereal
Messages : 109
Inscription : 06 Nov 2015 18:46

Re: Collider 2D dans monde 3D

Message par evereal » 04 Avr 2017 10:37

Je n'ai pas le logiciel sous les yeux mais il existe dans l'API
https://docs.unity3d.com/ScriptReferenc ... inder.html
“La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi. Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et personne ne sait pourquoi !”

Farstone
Messages : 187
Inscription : 04 Déc 2016 09:38

Re: Collider 2D dans monde 3D

Message par Farstone » 04 Avr 2017 12:37

Ajoute des collider en cercle de plus petite taille et met les par dessus les autres, ou fait des cylindre avec un trou au milieu pour les placer ou encore fait un système de bullet hole et regarde ou tu a tiré. Ou tu modélise une vraie cible avec chaque compartiment de ta cible comme un autre objet dans ton logiciel de 3d, et ensuite tu ajoute un mesh collider a tout les compartiment, j'ai pas d'autres idées.

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6225
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: Collider 2D dans monde 3D

Message par boubouk50 » 04 Avr 2017 13:13

Tu peux récupérer les coordonnées du point d'impact dans le RaycastHit que tu récupères par le Physics.Raycast (). La distance entre le centre de la cible et l'impact peut déterminer le nombre de points gagnés. Utilise seulement un MeshCollider sur ta cible.
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Farstone
Messages : 187
Inscription : 04 Déc 2016 09:38

Re: Collider 2D dans monde 3D

Message par Farstone » 04 Avr 2017 14:07

boubouk50 a écrit :Tu peux récupérer les coordonnées du point d'impact dans le RaycastHit que tu récupères par le Physics.Raycast (). La distance entre le centre de la cible et l'impact peut déterminer le nombre de points gagnés. Utilise seulement un MeshCollider sur ta cible.
C'est un bon moyen aussi (et le plus optimiser) mais il utilise des GO comme balle apparemment donc par raycast tu veux dire le placer devant la balle durant toute la traversé ?

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6225
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: Collider 2D dans monde 3D

Message par boubouk50 » 04 Avr 2017 14:11

Là, ça dépend de son système de tir (il ne l'a pas précisé), à savoir si le tir est droit ou non.
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Doucky
Messages : 8
Inscription : 03 Mars 2017 18:20

Re: Collider 2D dans monde 3D

Message par Doucky » 05 Avr 2017 11:22

Yes ok merci pour toutes les informations, je vais me pencher sur ta façon de faire boubouk50 dans un premier temps.

Hé bien mon système de tir est relativement simple :
1. Je fais une ray qui par du centre de ma caméra FPS et qui va tout droit.
2. Ensuite je fais un Physic.raycast qui va me donner les informations du point de l'espace que je suis en train de regarder au centre de ma caméra FPS (sauf si je regarde le ciel qui n'est pas physique et donc non détecté).
3. Avec les coordonnées de ce point (que je regarde depuis ma vu FPS) et les coordonées de mon point où s'instancie la balle de mon arme (le muzzle), je peux en déduire une direction.
4. Lorsque j’instancie ma balle, je lui donne la direction précédemment calculée.

Je conçoit déjà un bugg dans cette façon de faire, c'est que lorsqu’un obstacle obstrue la sortie de mon arme mais que le centre de ma vu FPS vise un lieu plus lointain, la balle va s'exploser contre l'obstacle devant alors que je vise au loin... Mais je n'ai pas encore vérifié ce bugg :)

Merci, je vous retiens au courant si vos techniques fonctionnent

Répondre

Revenir vers « Unity le logiciel »