Bonjour,
voilà j'ai un petit soucis de collision dans le développement d'un jeu 2D : lorsque je reste appuyé sur la flèche de droite/gauche et que mon personnage est collé à un mur, celui-ci continue légèrement d'avancer dans le mur puis revient par petites saccades, et réitère l'opération jusqu'à ce que j'arrête d'appuyer sur la flèche.
Donc pour résumer, la collision fonctionne correctement car le personnage revient à côté du mur mais n'est pas vraiment nette, y aurait-il un moyen de corriger cela sans redimensionner les colliders ? Merci d'avance =)
Exemple très simple :
-Quand je reste appuyé sur la flèche
-Quand je relâche la flèche
Problème de collision 2D
Re: Problème de collision 2D
Hello,
Dans l'inspecteur du rigidbody, change la détection de collision de 'discrete' a 'continuous".
Si ça ne résous pas ton problème, poste le code de ton contrôleur.
Dans l'inspecteur du rigidbody, change la détection de collision de 'discrete' a 'continuous".
Si ça ne résous pas ton problème, poste le code de ton contrôleur.
“La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi. Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et personne ne sait pourquoi !”
Re: Problème de collision 2D
J'avais déjà tenté de passé la détection des collisions en "continuous" mais ça n'a rien changé.
Voilà les deux lignes de code qui servent au déplacement horizontal du player :
Voilà les deux lignes de code qui servent au déplacement horizontal du player :
Code : Tout sélectionner
float h = Input.GetAxis ("Horizontal");
Code : Tout sélectionner
transform.Translate(Vector2.right * h * speed * Time.deltaTime);
Re: Problème de collision 2D
il va falloir abandonner le
transform.Translate(Vector2.right * h * speed * Time.deltaTime);
et remplacer par un
transform.Translate(Vector2.right * h * speed * Time.deltaTime);
et remplacer par un
Code : Tout sélectionner
void FixedUpdate() {
rigidbody.movePosition (transform.position + Vector2.right * Time.deltaTime * h * speed);
}
“La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi. Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et personne ne sait pourquoi !”
Re: Problème de collision 2D
J'ai appliqué ta méthode et je tombe sur cette erreur :
error CS0121: The call is ambiguous between the following methods or properties: `UnityEngine.Vector2.operator +(UnityEngine.Vector2, UnityEngine.Vector2)' and `UnityEngine.Vector3.operator +(UnityEngine.Vector3, UnityEngine.Vector3)'
Une idée de comment la résoudre ?
error CS0121: The call is ambiguous between the following methods or properties: `UnityEngine.Vector2.operator +(UnityEngine.Vector2, UnityEngine.Vector2)' and `UnityEngine.Vector3.operator +(UnityEngine.Vector3, UnityEngine.Vector3)'
Une idée de comment la résoudre ?
Re: Problème de collision 2D
J'ai essayé ça :
Les collisions sont parfaites mais le player reste collé au mur (quand je continue d'appuyer sur la flèche) et ne tombe pas alors qu'il y a du vide en dessous...
Code : Tout sélectionner
GetComponent<Rigidbody2D>().velocity = new Vector2(h*speed, GetComponent<Rigidbody2D>().velocity.y);
Re: Problème de collision 2D
Problème résolu, il fallait simplement que je passe mes deux lignes de codes (de base) dans la fonction "FixedUpdate" au lieu de la fonction "Update"
Merci pour ton aide
Merci pour ton aide