Page 1 sur 1

[RESOLU] Collider IsTouching ne fonctionne pas.

Publié : 08 Avr 2016 18:19
par Flamingitte
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.

Re: Collider IsTouching ne fonctionne pas.

Publié : 08 Avr 2016 19:03
par Moi 1971
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" ?

Re: Collider IsTouching ne fonctionne pas.

Publié : 08 Avr 2016 19:28
par Flamingitte
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.

Re: Collider IsTouching ne fonctionne pas.

Publié : 08 Avr 2016 19:48
par Moi 1971
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"

Re: Collider IsTouching ne fonctionne pas.

Publié : 08 Avr 2016 20:04
par Flamingitte
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 :) !

Re: Collider IsTouching ne fonctionne pas.

Publié : 08 Avr 2016 20:09
par Moi 1971
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. ;-)