J'ai installé un monde box2d avec un joueur contrôlé par un clavier. Le joueur peut marcher et sauter. Comment puis-je empêcher le joueur de "coller" aux murs lorsqu'il saute et appuie sur la touche directionnelle vers un objet ?
Réponses
Trop de publicités?Vous pouvez définir la friction de votre joueur à 0 et ensuite exécuter dans chaque boucle une fonction qui définit votre vitesse en X à zéro lorsque l'utilisateur n'appuie pas sur les touches de mouvement. Dans votre méthode pour vérifier les événements, vous devriez ajouter :
if (event.type == KeyReleased) {
if (!isKeyPressed(Keyboard::Left) && !isKeyPressed(Keyboard::Right)) {
player.stop();
}
}
Et dans votre player.stop() vous devriez faire quelque chose comme :
b2Vec2 vel = body->GetLinearVelocity();
vel.x = 0;
body->SetLinearVelocity(vel);
Cela fera que votre joueur aura une friction 0 avec les plateformes avec le patinage sur glace.
Tout dépend de la façon dont votre physique fonctionne actuellement, car il y a beaucoup de possibilités. La façon la plus simple de le faire, à mon avis, est de diviser le corps représenté en 4 parois (haut, gauche, droite, bas) et de faire en sorte que seul le sol praticable (haut) produise de la friction.