[RESOLU] [MY-AL] Combiner RB Velocity et AddForce

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
Avatar de l’utilisateur
WilfreGD
Messages : 10
Inscription : 15 Jan 2019 17:13

[RESOLU] [MY-AL] Combiner RB Velocity et AddForce

Message par WilfreGD » 16 Jan 2019 11:41

Bonjour a tous!
J'ai tenté de poser cette question sur les forums officiels mais sans réponse, du coup je me tourne vers vous.
Que ce soit en 2D ou en 3D, j'utilise Rigidbody.velocity pour déplacer mon personnage. Cela évite l'accélération et permet des contrôles instantanés. Mais justement, lorsque les touches de déplacement ne sont plus pressées, la vélocité est mise a 0, donc le joueur s'arrête. J'aimerais ajouter un AddForce pour pousser le joueur vers l’arrière, même quand les touches ne sont plus préssées. Mais l'AddForce est annulé parce que la vélocité est forcée a 0 et est plus forte que la fonction AddForce. Est-il possible de combiner les deux solutions ?

Voici mon code (2D) :

Code : Tout sélectionner

 void FixedUpdate()
{
	//Mouvement horizontal
        float horizontal = Input.GetAxis("Horizontal");
        rb2D.velocity = new Vector2(horizontal * speed, rb2D.velocity.y);

        //Saut
        if (Input.GetKeyDown(KeyCode.Space))
            rb2D.AddForce(new Vector2(0, jumpForce), ForceMode2D.Impulse);

        //Poussé par un enemy (debug)
        if (Input.GetKeyDown(KeyCode.T))
            rb2D.AddForce(new Vector2(-pushForce, 0), ForceMode2D.Impulse);
}
Merci bien!
Dernière édition par WilfreGD le 07 Fév 2019 17:09, édité 3 fois.

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6185
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: [MY-AL] Combiner RB Velocity et AddForce

Message par boubouk50 » 16 Jan 2019 11:49

Il est déconseillé d'utiliser directement la vélocité pour les raisons évidentes qui te posent problème.
Tu pourrais utiliser une condition pour éviter cela, genre quand les inputs sont à zéro, tu passes en AddForce, sinon tu restes en Vélocité.
Quoiqu'il en soit, le AddForce joue sur la vélocité, si tu l'affectes sans prendre en compte les forces présentes, alors les forces deviennent inutiles. Il faudrait plutôt revoir ton système pour n'utiliser que les forces.
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Avatar de l’utilisateur
WilfreGD
Messages : 10
Inscription : 15 Jan 2019 17:13

Re: [MY-AL] Combiner RB Velocity et AddForce

Message par WilfreGD » 07 Fév 2019 17:08

Merci, tout fonctionne. J'ai effectivement pris en compte les forces existantes et utilisé AddForce uniquement. Tout est une question de valeur après ça où je dois être très précis sur la force appliquée mais ça fonctionne!

Répondre

Revenir vers « (C#) CSharp »