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);
}