Problème de collision 2D

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
MinyMiny
Messages : 5
Inscription : 09 Août 2017 08:03

Problème de collision 2D

Message par MinyMiny » 09 Août 2017 08:31

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
Capture1.PNG
Capture1.PNG (14.87 Kio) Consulté 3738 fois
-Quand je relâche la flèche
Capture2.PNG
Capture2.PNG (12.85 Kio) Consulté 3738 fois

Avatar de l’utilisateur
evereal
Messages : 109
Inscription : 06 Nov 2015 18:46

Re: Problème de collision 2D

Message par evereal » 09 Août 2017 09:48

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.
“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 !”

MinyMiny
Messages : 5
Inscription : 09 Août 2017 08:03

Re: Problème de collision 2D

Message par MinyMiny » 09 Août 2017 21:05

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 :

Code : Tout sélectionner

float h = Input.GetAxis ("Horizontal"); 

Code : Tout sélectionner

transform.Translate(Vector2.right * h * speed * Time.deltaTime);

Avatar de l’utilisateur
evereal
Messages : 109
Inscription : 06 Nov 2015 18:46

Re: Problème de collision 2D

Message par evereal » 10 Août 2017 09:33

il va falloir abandonner le
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 !”

MinyMiny
Messages : 5
Inscription : 09 Août 2017 08:03

Re: Problème de collision 2D

Message par MinyMiny » 10 Août 2017 17:45

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 ?

MinyMiny
Messages : 5
Inscription : 09 Août 2017 08:03

Re: Problème de collision 2D

Message par MinyMiny » 10 Août 2017 19:37

J'ai essayé ça :

Code : Tout sélectionner

GetComponent<Rigidbody2D>().velocity = new Vector2(h*speed, GetComponent<Rigidbody2D>().velocity.y);
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...

MinyMiny
Messages : 5
Inscription : 09 Août 2017 08:03

Re: Problème de collision 2D

Message par MinyMiny » 10 Août 2017 20:21

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" :roll:

Merci pour ton aide ;-)

Répondre

Revenir vers « Scripting »