[Résolu] Comment trouver toutes les intersections d'un ray avec un collider ?

Questions techniques liées à l’utilisation d'Unity (et n'entrant pas dans le cadre d'une des sections suivantes)
Avatar de l’utilisateur
jmhoubre
Messages : 851
Inscription : 05 Oct 2019 22:05

[Résolu] Comment trouver toutes les intersections d'un ray avec un collider ?

Message par jmhoubre » 08 Nov 2021 15:52

Bonjour,

dans ce petit projet, j'ai un joueur qui bouge sur la scène, et des objets Cible qui cherchent à se cacher du joueur. La scène contient des maisons avec un BoxCollider, et des arbres avec un CapsuleCollider, qui servent de cachette :
Image

Quand une cible détecte qu'elle est visible du joueur, elle cherche la cachette la plus proche et va derrière (par rapport au joueur).
Image

Je patauge un peu sur la définition de la position de "derrière". Pour l'instant, j'essaie un RaycastAll depuis le joueur en direction de la cachette (le trait orange sur le seconde image). Mais je ne détecte que le premier hit sur chaque collider, et il me faudrait le second (le plus proche de la cible) : en y ajoutant une distance égale au rayon de la cible, j'aurais la position à atteindre. Le premier hit ne suffit pas, car les cachettes ont des tailles variables. J'ai essayé Queries Hit Backfaces dans les paramètres de la physique, mais visiblement cela ne fonctionne pas.

J'ai essayé d'autres méthodes, en particulier Collider.Raycast et Physics.Raycast, sans succès.

Au pire, je peux calculer où se trouve le 2ème hit avec quelques calculs supplémentaires, mais j'aimerais savoir si ce problème n'est pas déjà connu et résolu, ou si une solution plus élégante existe.

Merci d'avance.
Dernière édition par jmhoubre le 20 Nov 2021 20:03, édité 1 fois.

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

Re: Comment trouver toutes les intersections d'un ray avec un collider ?

Message par boubouk50 » 09 Nov 2021 09:10

Normalement, Physics.RaycastAll te retourne tous les colliders touchés. Dans le désordre, donc tu dois trier ensuite, mais tu dois les avoir.
Ce ne serait pas un problème de maxDistance ou de layer?
"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

Avatar de l’utilisateur
jmhoubre
Messages : 851
Inscription : 05 Oct 2019 22:05

Re: Comment trouver toutes les intersections d'un ray avec un collider ?

Message par jmhoubre » 10 Nov 2021 11:28

Mon souci n'est pas d'avoir tous les colliders, mais d'avoir tous les points du collider traversés par le rayon. Sur la cachette de la 2ème diapo, le rayon entre puis sort du collider. Les différentes méthodes de Raycast ne donnent que le point d'entrée. Je souhaite avoir le point de sortie.

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

Re: Comment trouver toutes les intersections d'un ray avec un collider ?

Message par boubouk50 » 10 Nov 2021 12:52

Et en faisant un second RaycastAll mais dans le sens inverse?
Tu obtiendrais un second hit par Collider, qui correspondrait à celui qui sort.
Ensuite, à toi de voir la logique derrière.
"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

Avatar de l’utilisateur
jmhoubre
Messages : 851
Inscription : 05 Oct 2019 22:05

Re: Comment trouver toutes les intersections d'un ray avec un collider ?

Message par jmhoubre » 20 Nov 2021 20:03

Bonsoir, et merci pour la réponse.
Je mets du temps à répondre, car je cherchais toujours une réponse avec un seul tir de rayon.

Ne trouvant pas (du moins un truc simple), j'ai fini par faire un second tir. Cela fonctionne.

Répondre

Revenir vers « Unity le logiciel »