Page 1 sur 1

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

Publié : 03 Sep 2021 12:02
par jmhoubre
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 ?

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

Publié : 03 Sep 2021 13:42
par boubouk50
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.

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

Publié : 03 Sep 2021 14:16
par jmhoubre
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.

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

Publié : 03 Sep 2021 16:09
par Max
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)