Search this site
Embedded Files
Mon BBC SDL pas à pas
  • Accueil
  • BBC BASIC
  • BBC OS
  • BBC MODULES
  • RUBRIQUES
  • LIENS
Mon BBC SDL pas à pas
  • Accueil
  • BBC BASIC
  • BBC OS
  • BBC MODULES
  • RUBRIQUES
  • LIENS
  • More
    • Accueil
    • BBC BASIC
    • BBC OS
    • BBC MODULES
    • RUBRIQUES
    • LIENS

⇨ MENU ⇨ BIBLIOTHEQUE

box2dlib.bbc

DESCRIPTION.


Le module box2dlib.bbc propose des procédures et des fonctions pour afficher graphiquement le contenu d’un monde physique Box2D. Cette bibliothèque est un module d’extension pour Box2D.




SYNTAXE.


INSTALL @lib$ + "box2dlib.bbc"




REMARQUES.


Le module box2dlib.bbc contient un ensemble de procédures et de fonctions est un binding, ou liaison, officiel du moteur physique Box2D 2.3.0 pour BBC BASIC for SDL 2.0. C'est-à-dire une couche logicielle, qui permet d'utiliser le moteur Box2D, initialement écrit dans en C++, avec BBC BASIC for SDL 2.0. Il permet de : 

- créer un monde physique ;

- créer des corps (biody): statique, dynamique, cinématique ;

- ajouter des formes (fixture) : rectangles, cercles, polygones ;

- créer des liens (joint) entre les deux corps ;

- définir forces, des impulsions, des vitesses ;

- lire les positions, des vitesses, des angles, etc.


Note : un corps définit les coordonnées du point de référence du visuel, il faudra donc associer un graphisme (dessin, clipart, sprint) à ces coordonnées pour afficher les visuels



La démarche d'utilisation de Box2d est généralement la suivante :

- création du monde avec FN_b2CreateWorld() ;

- création des corps avec :

- FN_b2StaticBox() pour les corps qui ne bouge pas ;

- FN_b2DynamicBody() pour les corps qui seront dirigés par l'utilisateur (avatar) ou le programme (ennemis, projectiles, ...) ;

- FN_b2KinematicBody() pour les corps qui ont des mouvements automatiques (ascenseur, tapis roulants, ...) ;

- associer une forme et une taille à chaque corps avec : 

- FN_b2BoxFixture() pour une forme rectangulaire ;

- FN_b2PolygonFixture() pour une forme polygonale ; 

- FN_b2CircleFixture() pour une forme circulaire ;

- FN_b2ChainFixture() pour une forme faite de segments ;

- et tant que nécessaire faire en boucle :

- mettre à jour l'affichage de l'animation avec PROC_b2WorldStep() ;

- obtenir la liste des corps en contact avec FN_b2ContactListWorld() ;

- analyser les corps en contact pour leur traitement avec PROC_b2GetContact().

 

Voir la procédure PROC_b2WorldStep() pour voir un exemple minimaliste de cette démarche.



Il est vivement recommandé de suivre un tutoriel dédié pour mieux appréhender les nombreuses possibilités qui sont offertes pour la création de jeu avec Box2d.



Rappel : Box2D travaille en mètres, pas en pixels. il faut ensuite les convertir en pixels pour l’affichage avec dbg_setscale().



Le module doit être chargé depuis votre programme à l'aide de l'instruction : INSTALL @lib$ + "box2dlib.bbc"




LISTE DES PROCÉDURES DU MODULE.


FN_b2BoxFixture() : associe une forme rectangulaire, une masse et des forces à un corps dans un monde physique Box2d.

FN_b2ChainFixture() : associe une forme faite de segments et des forces à un corps dans un monde physique Box2d.

FN_b2CircleFixture() : associe une forme circulaire, une masse et des forces à un corps dans un monde physique Box2d.

FN_b2ContactListWorld() : retourne la première collision actuellement présente dans un monde physique Box2d.

FN_b2CreateWorld() : crée un nouveau monde et définie ses accélérations horizontale et verticale.

FN_b2DistanceJoint() : permet de relier deux corps par un lien simulant un ressort dans un monde physique Box2d.

FN_b2DynamicBody() : créer un corps dynamique sans forme par défaut.

FN_b2FrictionJoint() : permet de relier deux corps par un lien simulant un frottement dans un monde physique Box2d.

FN_b2GearJoint() : permet de relier deux corps par un lien mécanique dans un monde physique Box2d.

FN_b2GetBody() : retourne l'identifiant du corps auquel une forme est associée dans un monde physique Box2d.

FN_b2GetMass() : retourne la masse d'un corps dans un monde physique Box2d.

FN_b2GetShape() : retourne la forme du corps auquel une forme est associée dans un monde physique Box2d.

FN_b2IsAwake() : retourne l'état actuel d'un corps dans un monde physique Box2d.

FN_b2IsTouching() : vérifie que deux corps se touchent physiquement dans un monde physique Box2d.

FN_b2KinematicBody() : créer un corps cinétique sans forme par défaut.

FN_b2NextContact() : retourne la collision suivante actuellement présente dans un monde physique Box2d.

FN_b2PolygonFixture() : associe une forme polygonale, une masse et des forces à un corps dans un monde physique Box2d.

FN_b2PrismaticJoint() : crée un lien qui forcera deux corps à glisser le long d'un axe dans un monde physique Box2d.

FN_b2PulleyJoint() : crée un système de poulies entre deux corps dans un monde physique Box2d.

FN_b2RevoluteJoint() : crée un lien qui forcera deux corps à tourner autour d'un point dans un monde physique Box2d.

FN_b2RopeJoint() : permet de relier deux corps par un lien simulant une corde dans un monde physique Box2d.

FN_b2StaticBox() : créer un corps statique rectangulaire.

FN_b2UserDataBody() : retourne la valeur numérique personnalisée associée à un corps.

FN_b2UserDataFixture() : retourne la valeur numérique personnalisée associée à une forme.

FN_b2UserDataJoint() : retourne la valeur numérique personnalisée associée à un lien entre deux corps.

FN_b2WeldJoint()  : permet de relier deux corps par un lien simulant une soudure dans un monde physique Box2d.

FN_b2WheelJoint() : permet de relier deux corps par un lien simulant une roue sur un pignon dans un monde physique Box2d.

PROC_b2SetActive() : active ou désactive un corps dans un monde physique Box2d.

PROC_b2SetAwake() : indique si un corps doit participer aux interactions dans un monde physique Box2d.

PROC_b2DestroyBody() : détruit un corps dans un monde physique Box2d.

PROC_b2DestroyFixture() : détruit une forme associée à un corps dans un monde physique Box2d.

PROC_b2DestroyWorld() : détruit un monde et tous les corps qu'il contient.

PROC_b2Exit : fermer le moteur Box2D et libère les ressources mémoires.

PROC_b2GetBodies() : retourne les identifiants des deux corps liés par un lien, jointure, dans un monde physique Box2d.

PROC_b2GetBody() : retourne la position et l'inclinaison d'un corps.

PROC_b2GetContact() : retourne les formes impliquées dans une collision et leur type de forme.

PROC_b2GetVelocity() : retourne les vitesses linaires et angulaire d'un corps.

PROC_b2Init : initialise la prise en charge du moteur Box2D.

PROC_b2Poke() : donne une brève impulsion à un corps en un point et avec une force donnés.

PROC_b2PrismaticMotorForce() : définit la force maximum du moteur d’un lien prismatique.

PROC_b2PrismaticMotorSpeed() : définit la vitesse cible du moteur d’un lien prismatique.

PROC_b2Push() : pousse un corps en un point et avec une force donnés.

PROC_b2RevoluteMotorSpeed() : définit la vitesse cible du moteur d’un lien rotatif.

PROC_b2RevoluteMotorTorque() : définit la force maximum du couple du moteur d’un lien rotatif.

PROC_b2SetAllowSleep() : autorise ou interdit à un corps de s'endormir, c'est-à-dire de devenir non gérer pas le moteur Box2d.

PROC_b2SetBody() : modifie la position et/ou l'inclinaison d'un corps.

PROC_b2SetBullet() : active ou désactive le mode bullet pour la détection de collision d'un corps qui se déplace rapidement.

PROC_b2SetFilter() : détermine les corps qui peuvent entrer en collision dans un monde physique Box2d.

PROC_b2SetFixedRotation() : autorise ou interdit la rotation d’un corps dans un monde physique Box2d.

PROC_b2SetGravity() : modifie la gravité verticale et horizontale d'un monde physique Box2d.

PROC_b2SetNextVertex() : associe un sommet virtuel après le dernier sommet d'une forme créée avec FN_b2ChainFixture().

PROC_b2SetPrevVertex() : associe un sommet virtuel avant le premier sommet d'une forme créée avec FN_b2ChainFixture().

PROC_b2SetSensor() : active ou désactive le mode capteur pour une forme dans un monde physique Box2d.

PROC_b2SetTarget() : met à jours les coordonnées du corps mobile d'un lien d'attraction créé avec FN_b2GearJoint().

PROC_b2SetVelocity() : modifie les vitesses linaires et/ou angulaire d'un corps.

PROC_b2UserDataBody() : associe une valeur numérique personnalisée à un corps.

PROC_b2UserDataFixture() : associe une valeur numérique personnalisée à une forme.

PROC_b2UserDataJoint() : associe une valeur numérique personnalisée à un lien entre deux corps.

PROC_b2WheelMotorSpeed() : définit la vitesse de la liaison d'une roue sur un pignon créé avec FN_b2WheelJoint()

PROC_b2WorldStep() : met à jour l'affichage, animation suivante, d'un monde physique Box2d.

Votre aide est précieuse pour améliorer ce site, alors n'hésitez pas à faire part de

vos remarques, vos commentaires et de vos suggestions.

Dans la RETROGICIEL vous trouvez des suggestions simples et classiques pour

TESTER - DÉCOUVRIR - PRATIQUER - APPROFONDIR - EXPLORER

avec un exemple de résolution à télécharger pour vous inspirer.

Google Sites
Report abuse
Page details
Page updated
Google Sites
Report abuse