Rigidbody2D + velocity bugs [résolu]

Questions techniques liées à l’utilisation d'Unity (et n'entrant pas dans le cadre d'une des sections suivantes)
Répondre
Warcza
Messages : 160
Inscription : 18 Fév 2016 20:49

Rigidbody2D + velocity bugs [résolu]

Message par Warcza » 14 Juil 2020 11:42

Bonjour,

J'ai un problème étrange, depuis que je suis passé sur Unity 2019.4.2f1, le fais d'utiliser le rigidbody.MovePosition, bloque toutes les vélocités. Par exemple si mon personnage utilise de la vélocité pour tout ce qui de tomber ou autres et qu'il bouge de gauche à droite à l'aide de .MovePosition alors la velocité du personnage pour tomber bloqué et le personnage reste dans les airs.

Par-contre si à la place de rigidbody.MovePosition, j'utilise le transform.localPosition (ou position), + le vector de mouvement alors ici je n'ai aucun soucis.
Je suppose que c'est choisis et non un bug puisqu'on retrouve ceci est également sur la version 2020, mais du coup j'ai quelques questions.

- J'ai l'impression que maintenant faire bouger tes objets avec transform directement effectue les mêmes calcules qu'avec le rigidbody.moveposition, à savoir empêcher que tes collisions se chevauche et avoir l'impression que tes objets saccadent contre un mur par exemple, est-ce réellement le cas du coup?

- Le fais que movePosition maintenant bloque la vélocité, qu'est ce qu'il se passe du coup? est ce que la vélocité est mis en "pause" et reprend de la ou elle en était une fois qu'il n'y ait plus de movePosition? ou elle est-ce qu'elle se cumule / s’arrête en fonction du drag ou autre?

Merci,
Dernière édition par Warcza le 14 Juil 2020 18:55, édité 1 fois.
(╯°□°)╯︵ ┻━┻

Avatar de l’utilisateur
Max
Messages : 8763
Inscription : 30 Juil 2011 13:57
Contact :

Re: Rigidbody2D + velocity bugs

Message par Max » 14 Juil 2020 13:29

Bonjour,

on parle bien de Rigidbody2D, et non pas de Rigidbody (dans la description de ton problème, cela sème un peu le doute).
Sinon, poste ton code, pour y voir plus clair.
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

Warcza
Messages : 160
Inscription : 18 Fév 2016 20:49

Re: Rigidbody2D + velocity bugs

Message par Warcza » 14 Juil 2020 13:39

Oui, c'est bien rigidbody2D,

Pour le mouvement je fais juste ceci dans un fixeUpdate :

Code : Tout sélectionner

thisRig.MovePosition (thisTrans.localPosition + (Vector3)currMove);
J'execute cette ligne seulement quand la magnitude de currMove est supérieure a 0, et lorsque c'est le cas peut importe de ou et quand on applique de la vélocité (même celle par défaut du rigidbody2D), la vélocité est bloqué en quelques sorte, comme si le MovePosition écrasé la position que devrait avoir l'objet avec la vélocité.
Mais par-contre dans le cas de la gravité, la vélocité se cumule.

Mais si je remplace cette ligne de code par

Code : Tout sélectionner

thisTrans.localPosition += (Vector3)currMove;
Je n'ai aucun problème, et pas de problème étrange lié aux collisions avec une grande vitesse, donc je sais pas trop ce qu'Unity à fais comme modification, mais voila :?:
(╯°□°)╯︵ ┻━┻

Avatar de l’utilisateur
Max
Messages : 8763
Inscription : 30 Juil 2011 13:57
Contact :

Re: Rigidbody2D + velocity bugs

Message par Max » 14 Juil 2020 16:52

je viens d'essayer l'exemple de la doc, et cela semble bien fonctionner (Unity 2019.4)
Ceci dit, dans la doc, il est bien spécifié: During the move, neither gravity or linear drag will affect the body. This causes the object to rapidly move from the existing position, through the world, to the specified position.
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

Warcza
Messages : 160
Inscription : 18 Fév 2016 20:49

Re: Rigidbody2D + velocity bugs

Message par Warcza » 14 Juil 2020 17:27

MMh, ben si j'utilise l'exemple ici : https://docs.unity3d.com/ScriptReferenc ... ition.html en changeant le rigidbody par le rigidbody2D et que je vire le "kinematic = true", si je le place en hauteur et que je play, alors j'obtiens le même résultat.

L'objet descend très lentement, beaucoup plus que si je désactive le script, mais je suppose que du coup c'est lié à l'extrait de la doc que tu as mis.

J'ai record un petit exemple si jamais:
https://www.dropbox.com/s/v241rci1iiq9u ... 2.mp4?dl=0


Du coup pour le code au-cas ou j'ai ceci :

Code : Tout sélectionner

using UnityEngine;
using System.Collections;

public class test : MonoBehaviour
{
    public Rigidbody2D rb;

    void Awake()
    {
        // Creates the floor.
        GameObject floor  = GameObject.CreatePrimitive(PrimitiveType.Plane);
        floor.transform.localScale = new Vector3(6.0f, 1.0f, 6.0f);
        floor.transform.position = new Vector3(0.0f, -0.5f, 0.0f);

        Material matColor = new Material(Shader.Find("Standard"));
        matColor.color = new Color32(32, 32, 128, 255);
        floor.GetComponent<Renderer>().material = matColor;

        Camera.main.transform.position = new Vector3(6.0f, 4.0f, 6.0f);
        Camera.main.transform.localEulerAngles = new Vector3(26.0f, -135.0f, 0.0f);
    }

    void Start()
    {
        rb = GetComponent<Rigidbody2D>();
    }

    void FixedUpdate()
    {
        rb.MovePosition(transform.position + transform.right * Time.fixedDeltaTime);
    }
}
(╯°□°)╯︵ ┻━┻

Avatar de l’utilisateur
Max
Messages : 8763
Inscription : 30 Juil 2011 13:57
Contact :

Re: Rigidbody2D + velocity bugs

Message par Max » 14 Juil 2020 17:29

je parlais de l'exemple de Rigidbody2D.MovePosition (quitte à faire).
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

Warcza
Messages : 160
Inscription : 18 Fév 2016 20:49

Re: Rigidbody2D + velocity bugs

Message par Warcza » 14 Juil 2020 17:44

J'ai le même résultat ;s
(╯°□°)╯︵ ┻━┻

Avatar de l’utilisateur
Max
Messages : 8763
Inscription : 30 Juil 2011 13:57
Contact :

Re: Rigidbody2D + velocity bugs

Message par Max » 14 Juil 2020 18:36

pour moi, tant que MovePosition s"exécute, tu n'aura pas de valeur de vélocité sur ton RB, comme spécifié dans la doc. Ce qui parait logique dans la mesure où un MovePosition est un déplacement en "dur" si je puis dire, et qui s'affranchis de la gravité.
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

Warcza
Messages : 160
Inscription : 18 Fév 2016 20:49

Re: Rigidbody2D + velocity bugs [résolu]

Message par Warcza » 14 Juil 2020 18:54

Ouai surement, c'est bizarre du coup que sur les versions d'avant la combinaison des deux marchés, ça veut dire que c'était bugué depuis tout ce temps? x).

Mais ouai ok ça marche,
Merci bien tout cas
(╯°□°)╯︵ ┻━┻

Avatar de l’utilisateur
Max
Messages : 8763
Inscription : 30 Juil 2011 13:57
Contact :

Re: Rigidbody2D + velocity bugs [résolu]

Message par Max » 14 Juil 2020 19:01

Warcza a écrit :
14 Juil 2020 18:54
Ouai surement, c'est bizarre du coup que sur les versions d'avant la combinaison des deux marchés, ça veut dire que c'était bugué depuis tout ce temps? x)
Non je ne pense pas. Il faudrait regarder la doc de MovePosition au niveau des version précédentes d'Unity et voir si effectivement il y a des différences qui pourraient expliquer ce changement de fonctionnement apparent.
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

Répondre

Revenir vers « Unity le logiciel »