méthodes de détection du sol (isGrounded)

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
Avatar de l’utilisateur
jmhoubre
Messages : 851
Inscription : 05 Oct 2019 22:05

méthodes de détection du sol (isGrounded)

Message par jmhoubre » 03 Sep 2021 12:02

Bonjour,

une question existentielle. Il y a plusieurs méthodes pour tester si le joueur est en contact avec le sol : ajout de petits colliders aux pieds, utilisation de OnEnterCollisionEnter, ...

Personnellement, quand le joueur a un rigidbody, je teste si sa vélocité sur l'axe y est nulle ou non :

Code : Tout sélectionner

private Rigibody rb;
private bool isGrouded;

private void Update ()
{
	isGrounded = (rb.velovity.y == 0)
}
Je trouve ceci simple et efficace, cela fonctionne, cela semble performant (lecture d'un paramètre). Comme je vois très rarement cette méthode utilisée dans les tutos, je me demande s'il n'y a pas un piège ou un vice caché. Un avis ?

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

Re: méthodes de détection du sol (isGrounded)

Message par boubouk50 » 03 Sep 2021 13:42

Piège: Cela ne fonctionne que sur les sols plats.
Sur une pente, tu auras une vélocité en Y positive ou négative.

Il est possible que sur une plateforme mouvante en hauteur, cela ne marche pas non plus. A vérifier.
"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: méthodes de détection du sol (isGrounded)

Message par jmhoubre » 03 Sep 2021 14:16

Oui, aussi.
A force de chercher des cas limites, j'ai aussi constaté que parfois, y est très petit, et que cela ne fonctionne plus. J'utilise donc Mathf.Approximately.

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

Re: méthodes de détection du sol (isGrounded)

Message par Max » 03 Sep 2021 16:09

Bonjour,

personnellement, je passe par les Raycasts, méthode d’ailleurs employée par pas mal de controllers (y compris ceux codés par Unity dans ses assets il me semble)
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

Répondre

Revenir vers « Scripting »