[RESOLU] [DB-AL] Valeurs de la Velocité du Rigidbody2D

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
Baxter
Messages : 12
Inscription : 04 Fév 2019 13:42

[RESOLU] [DB-AL] Valeurs de la Velocité du Rigidbody2D

Message par Baxter » 17 Mars 2019 20:31

Bonjour,

Je m'excuse d'avance si je ne suis pas dans la bonne section.
Je débute et j'ai un problème avec un player que j'ai dessiné (pour du 2D).

J'ai ajouté à ce player un Rigidbody2D mit les colliders qui vont bien et fait un script qui permet de faire avancer et reculer le personnage. :super:

Sauf que quand j'avance ou recule, les valeurs de vélocité du rigidbody2d prennent des valeurs étrange. Lorsque mon personnage s'arrête, la valeur ne revient pas à zéro par exemple!
Idem lorsque la valeur x est à zéro et que j'avance la valeur reste à zéro tout un moment avant de prendre une valeur quelconque 8/

Normalement, si le personnage avance ou recule la valeur de velocity.x est non nul et si il ne se déplace pas la valeur est nul?

C'est gênant car je me sert de ces valeurs pour faire défiler mon background.

C'est peut-être un comportement normal mais en tant que débutant, je ne sais pas trop.
Il s'agit d'un mauvais réglage du rigidbody2d? il manque un script pour faire ça? ....

Bax
Dernière édition par Baxter le 17 Mars 2019 23:41, édité 1 fois.

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

Re: [DB-AL] Valeurs de la Velocité du Rigidbody2D

Message par Max » 17 Mars 2019 21:56

Bonsoir,

Tu ne donnes pas assez d'informations pour pouvoir répondre, à commencer par la méthode employée pour le contrôle de ton player. Passes-tu par les contrôles physiques (conseillé) ?
Poste ton script, cela sera un bon point de départ.
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

Baxter
Messages : 12
Inscription : 04 Fév 2019 13:42

Re: [DB-AL] Valeurs de la Velocité du Rigidbody2D

Message par Baxter » 17 Mars 2019 22:01

Bonjour Max,

Oui, avec le script c'est mieux :gene:

Code : Tout sélectionner

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class scriptanimation : MonoBehaviour
{
    [SerializeField] float Speed = 2f, jumpForce = 500f;
    Rigidbody2D rb;
    Animator anim;
    bool lookRight = true;

    [SerializeField] bool grounded;
    [SerializeField] float groundRadius = 0.02f;
    [SerializeField] Transform groundCheck;
    [SerializeField] LayerMask theGround;

    // Start is called before the first frame update
    void Awake()
    {
        rb = GetComponent<Rigidbody2D>();
        anim = GetComponent<Animator>();
    }

    // Update is called once per frame
    void Update()
    {
        grounded = Physics2D.OverlapCircle(groundCheck.position, groundRadius, theGround);
        anim.SetBool("Grounded", grounded);

        float move = Input.GetAxis("Horizontal");
        
        anim.SetFloat("speed", Mathf.Abs(move));
        anim.SetFloat("Vspeed", rb.velocity.y);
        transform.Translate(Vector2.right * move * Speed * Time.deltaTime);

        if (move> 0 && !lookRight)
        {
            Flip();

        }
  else if(move < 0 && lookRight)
        { Flip(); }

        
    }
    private void FixedUpdate()
    {
       
        if (Input.GetKeyDown(KeyCode.Space))
        {
            rb.AddForce(new Vector2(0, jumpForce));
        }
    }

    void Flip()
    { lookRight = !lookRight;
        Vector2 theScale = transform.localScale;
        theScale.x *= -1;
        transform.localScale = theScale;
    }
}

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

Re: [DB-AL] Valeurs de la Velocité du Rigidbody2D

Message par Max » 17 Mars 2019 22:20

Le contrôle par le traditionnel couple transform + Translate cohabite généralement assez mal avec la physique.
Il faut donc rester sur des commandes liées à la physique, soit par un contrôle direct de la vélocité de ton RigidBody2D, soit en passant par des fonctions du genre AddForce par exemple.

Tu peux t'inspirer par exemple du script fournis dans le StandardAssets (import package 2D avant), comme par exemple PlatformerCharacter2D.cs
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

Baxter
Messages : 12
Inscription : 04 Fév 2019 13:42

Re: [DB-AL] Valeurs de la Velocité du Rigidbody2D

Message par Baxter » 17 Mars 2019 23:36

Merci Max une fois de plus :super:
J'ai remplacé mon script par celui que tu m'a indiqué et je n'ai pas de problème.

En l'adaptant ça va le faire! ;-)

Bonne soirée
Bax

Répondre

Revenir vers « (C#) CSharp »