Question

J'utilise Box2d pour un jeu topdown. Le « sol » est une série de tuiles, chaque tuile est un corps statique avec une forme de capteur. Puis-je friction prendre effet pour cela, même si les objets ne sont pas vraiment « en collision » avec le sol?

Si Box2d ne me laisse pas faire cela, je considérais comme essayer de mettre en œuvre ma propre en détectant quelle force se déplace actuellement l'objet, et l'application d'une force opposée à, mais je ne suis pas tout à fait sûr de savoir comment détecter cette force .

Était-ce utile?

La solution 3

ApplyImpulse() au lieu de ApplyForce() fonctionne beaucoup mieux.

Autres conseils

Une autre façon de le faire est de mettre linearDamping sur votre corps. Vous pouvez définir cette fonction différemment sur la tuile votre objet est.

Le frottement est dirigé contre la vitesse du corps, indépendamment des autres forces.

Si réglage de l'amortissement linéaire ne suffit pas ou se fondant sur une propriété du b2Body ne convient pas, vous pouvez facilement calculer les forces de friction non linéaires et appelez ApplyLinearImpulse () ou ApplyLinearForce () toutes les images.

  • Requête la vitesse avec b2Body.GetLinearVelocity (), l'échelle (non linéaire), le résultat comme on le souhaite pour obtenir la force, et inverser le signe des deux composants.

  • Si vous décidez d'arrêter le corps (quand il est assez lent à coller), SetLinearVelocity () fait le tour sans calculs.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top