[Résolu][C#] Vérifier qu'un objet ne touche pas le sol

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
rocketter
Messages : 72
Inscription : 08 Juin 2015 08:46

Re: Vérifier qu'un objet ne touche pas le sol

Message par rocketter » 04 Juil 2015 16:10

Merci de ta solution également ZJP, après j'suis partisan de toutes les solutions, mêmes les plus compliquées, ça me permet d'apprendre des choses comme ça. Par contre quelqu'un pourrait-il me renseigner par rapport à mes questions ci-dessous :
pk ne pas prendre la propriété size à la place de extents ? pk la moitié de la boite finalement ? Et existe-t-il une commande comme debug.log pour les infos textuelles, mais ici pour représenter des infos dans la vue 3D ?

Avatar de l’utilisateur
cayou66
Codeur
Codeur
Messages : 6450
Inscription : 30 Juin 2011 14:45
Localisation : Montréal

Re: Vérifier qu'un objet ne touche pas le sol

Message par cayou66 » 05 Juil 2015 16:18

Tu peux afficher des Gizmos, ce sont des formes géométriques visibles uniquement dans la vue scène ou game si tu actives les Gizmos, mais seulement dans l'éditeur donc.
http://docs.unity3d.com/ScriptReference/Gizmos.html

rocketter
Messages : 72
Inscription : 08 Juin 2015 08:46

Re: Vérifier qu'un objet ne touche pas le sol

Message par rocketter » 05 Juil 2015 19:10

Merci Cayou, je vais regarder à ça, j'avais vu également Debug.drawLine et Debug.DrawRay, la différence se situe où par contre par rapport aux gizmos ?
Sinon j'en reviens encore au bout de code proposé par boubouk50 :

Code : Tout sélectionner

collider.bounds.extents.y
, la propriété extents est égale à la moitié du radius du collider en fait c'est ça ? Et la propriété size est égale au radius ?

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

Re: Vérifier qu'un objet ne touche pas le sol

Message par boubouk50 » 06 Juil 2015 09:44

En fait: Extends = Size / 2.
Extends correspond au rayon et size au diamètre dans le cas d'une sphère. Ici tu as besoin du rayon pas du diamètre.

@ZJP: je ne suis pas sur que toutes les conditions soient réunis dans ton code. Dans le cas d'une plateforme, si tu la touches par dessous tu seras considéré comme grounded et donc tu pourras sauter en continu et donc rester coller dessous cette plateforme.
"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

rocketter
Messages : 72
Inscription : 08 Juin 2015 08:46

Re: Vérifier qu'un objet ne touche pas le sol

Message par rocketter » 06 Juil 2015 10:51

Merci boubouk de ta réponse, donc si je peux résumer ta commande avec un schéma sommaire, est ce que j'ai bon avec ceci ?
unity.jpg
unity.jpg (23.86 Kio) Consulté 3670 fois
Pourquoi par contre ajouter le threashold finalement ?

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

Re: Vérifier qu'un objet ne touche pas le sol

Message par boubouk50 » 06 Juil 2015 12:03

Uniquement pour la flexibilité.
Disons que ce code est passe partout, au cas où le collider n'encapsulerai pas tout.
Imaginons que tu as un perso de type patate avec des pieds dans un collider sphérique, les pieds pourraient ne pas être englobés dans la sphère, du coup sans le seuil, les pieds de ton perso seraient dans le sol. Le seuil te permet donc de le remonter un peu (ou de le descendre) pour ajuster les approximations.
"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

rocketter
Messages : 72
Inscription : 08 Juin 2015 08:46

Re: Vérifier qu'un objet ne touche pas le sol

Message par rocketter » 06 Juil 2015 14:25

Excuse moi mais je ne te suis pas trop boubouk, il me manque sûrement des notions pour comprendre ce que tu expliques mais sans lancer le jeu, si la position du sol sur son axe Y est bien définie par rapport au perso et avec la gravité activée, comment les pieds pourraient se retrouver dans le sol ?

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

Re: Vérifier qu'un objet ne touche pas le sol

Message par boubouk50 » 06 Juil 2015 14:53

Ton collider peut ne pas prendre tout ton perso en compte, du coup si tu ne fais pas de seuil, il sera altimétrisé au niveau du collider et tout ce qu'il y aura en dessous sera dans le sol. Le seuil permet donc de laisser une marge pour les éléments sous le perso qui ne sont pas pris en compte dans le collider.
Ex: (c'est le plusse beau perso du monde)
Image
"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

rocketter
Messages : 72
Inscription : 08 Juin 2015 08:46

Re: Vérifier qu'un objet ne touche pas le sol

Message par rocketter » 06 Juil 2015 15:15

Yes ! c'est bon j'ai compris ! Grâce à toi et ton Mr Patate lol. Le collider permet à un objet d'avoir des interactions physiques donc cela va définir également sa capacité à pouvoir toucher le sol. Du coup j'ai l'impression que mon schéma n'est pas bon, le raycast va partir du centre de ma sphère en fait non ?

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

Re: Vérifier qu'un objet ne touche pas le sol

Message par boubouk50 » 06 Juil 2015 15:36

Oui. Effectivement, j'aurai du corriger ton dessin, j'avais pas fait attention.
"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

Répondre

Revenir vers « (C#) CSharp »