[RESOLU] Collider IsTouching ne fonctionne pas.

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
Flamingitte
Messages : 16
Inscription : 08 Mars 2016 11:51

[RESOLU] Collider IsTouching ne fonctionne pas.

Message par Flamingitte » 08 Avr 2016 18:19

Bonjour,
Je suis actuellement en train de réaliser un plateformer sur Android, à titre de test et de découverte. Mon problème est que j'aimerais détecter la collision entre mon personnage et une plateforme, pour ce faire j'utilise la fonction Collider.IsTouching(), après quelque recherche j'ai cru comprendre qu'elle répondrait à mes attente. Seulement elle ne fonctionne pas, ou je l'utilise mal, je ne sais pas ...
J'ai bien sûre attaché le tag "plateform" à mes plateforme.
voici le morceau de code :

Code : Tout sélectionner

private Collider2D m_coll; // collider de mon personnage
public Collider2D m_objetTouch; //collider du "plateformer"

...
//dans mon start
m_coll = GetComponent<Collider2D> ();

//dans mon Update
if (m_coll.IsTouching (m_objetTouch)) {
	if (m_objetTouch.gameObject.tag == "plateform") {
		print ("touche plateforme");
	}
	print ("touche");
} else {
	print ("ne touche pas");
}
donc voilà, et évidemment dans ma console j'obtiens "ne touche pas". La question semble bête mais voilà je n'ai pas trouvé de solution, j'ai bien cherché sur google mais je n'ai pas trouver de solution mis à part l'utilisation de OnCollisionEnter2D(Collision2D) que je n'aime pas du tout, si il n'y à pas d'autre moyen je l'utiliserais bien entendu .

Merci à vous et à bientôt.

Moi 1971
Messages : 727
Inscription : 29 Sep 2015 13:38

Re: Collider IsTouching ne fonctionne pas.

Message par Moi 1971 » 08 Avr 2016 19:03

Bonjour,
Qu'y a t'il dans "m_objetTouch" Cette variable est publique, donc tu dois la renseigner dans l'éditeur. Elle ne représente qu'une seule plateforme. Comme mets-tu la plateforme qui se trouve sous les pieds du perso dans "m_objetTouch" ?

Flamingitte
Messages : 16
Inscription : 08 Mars 2016 11:51

Re: Collider IsTouching ne fonctionne pas.

Message par Flamingitte » 08 Avr 2016 19:28

Salut, merci pour ta réponse.

Je ne pense pas qu'il faut remplir m_objetTouch, c'est une instance qui normalement est "remplie" par la fonction IsTouching (du moins c'est ce que je pense avoir compris) c'est pour ça que normalement je peu accéder au tag de celui ci. Car en effet le Collider que je touche avec le collider du personnage peut être n'importe quel Collider se trouvant sur la scene, de ce fait ce n'est pas à moi de le remplir mais bien à la fonction IsTouching. Bien sûre je peu me tromper, mais si ce n'est pas le cas je suis à l'écoute. Si ce n'est pas ça je ne sais pas avec quoi le remplir mon collider en public ... Si je l'ai mis en public c'est plus parce que je ne sais pas trop comment cette fonction opère, donc parce qu'on ne sais jamais, autant la mettre en public.

Mais le fait qu elle soit en public ne veut pas dire forcément qu'on doit modifier son contenu dans l'inspector, ça veut juste dire que je peu accéder à cette instance (ou variable) sans avoir recours à des accesseurs ou à des mutateurs.

Moi 1971
Messages : 727
Inscription : 29 Sep 2015 13:38

Re: Collider IsTouching ne fonctionne pas.

Message par Moi 1971 » 08 Avr 2016 19:48

Dans la doc Unity ici : http://docs.unity3d.com/ScriptReference ... ching.html il n'est pas dit que cette fonction va chercher le bon collider pour tester. Cette fonction renvoie un bool et c'est tout. Donc c'est à toi de renseigner cette variable.
C'est pour ça que ta fonction renvoie false et que s'affiche "ne touche pas"

Flamingitte
Messages : 16
Inscription : 08 Mars 2016 11:51

Re: Collider IsTouching ne fonctionne pas.

Message par Flamingitte » 08 Avr 2016 20:04

En effet tu as raison. Je viens de tester et effectivement il faut renseigner le collider, dommage ... J ai essayer la fonction OnCollisionStay2D qui elle répond complètement à mes attentes. J'aimais bien le fait que ça soit un simple appel de fonction avec IsTouching.
Merci beaucoup pour ton aide :) !

Moi 1971
Messages : 727
Inscription : 29 Sep 2015 13:38

Re: Collider IsTouching ne fonctionne pas.

Message par Moi 1971 » 08 Avr 2016 20:09

De rien,
de ce que j'ai compris du fonctionnement du forum, si ton problème est résolu, il faut que tu modifie le titre de ton poste et rajoute "[Résolu]" en début. ;-)

Verrouillé

Revenir vers « (C#) CSharp »