⇨ MENU ⇨ BIBLIOTHEQUE ⇨ box2dlib.bbc
PROC_b2GetContact()
⇨ MENU ⇨ BIBLIOTHEQUE ⇨ box2dlib.bbc
PROC_b2GetContact()
DESCRIPTION.
La procédure PROC_b2GetContact() retourne les identifiant des deux formes, ainsi que leur cotés en contact, impliquées dans une collision dans un monde physique Box2d.
SYNTAXE.
PROC_b2GetContact( collision , kforme_A , kforme_B , kcote_A , kcote_B )
REMARQUES.
collision doit être l'identifiant de la variable ayant reçu la valeur retournée par l'appel de la fonction FN_b2ContactListWorld() ou de l'appel précédent de la fonction FN_b2NextContact().
L'appel de la procédure PROC_b2GetContact() va retourner :
- l'une des formes dans kforme_A ;
- l'autre forme dans kforme_B ;
- le coté, segment, de kforme_A en contact avec kforme_B dans kcote_A ;
- le coté, segment, de kforme_B en contact avec kforme_A dans kcote_B.
Note pour les types de formes simples, la procédure PROC_b2GetContact() peut retourner 0 pour kcote_A et/ou kcote_B.
La procédure PROC_b2GetContact() permet de condenser le code du traitement des collisions, et surtout de connaitre précisément sur quelles parties, cotés ou segments les formes se rencontrent. Cette fonctionnalité est particulièrement utile pour gérer les collisions si au-moins l'un des deux corps à une forme polygonale, obtenue avec la fonction FN_b2PolygonFixture(), ou s'il s'agit d'une suite de segments, obtenue avec la fonction FN_b2ChainFixture().
La procédure PROC_b2GetContact() remplacera, avantageusement les appels aux fonctions FN_b2ContactGetFixtureA() et FN_b2ContactGetFixtureB(), en permettant moins d’appels système, un script plus lisible, une meilleure analyse d'une collision, en particulier sur les formes faites d'une chaine de segments.
Voir les fonctions FN_b2ContactListWorld() et FN_b2NextContact() qui permettent de parcourir la liste des collisions actuellement actives dans un monde Box2d.
Rappel : la procédure PROC_b2Init devra toujours être appelée avant tout autre fonction ou procédure de box2dlib.bbc.
La procédure PROC_b2GetContact() est importée depuis le module box2dlib.bbc.
RUBRIQUES.
Les dessins et les graphismes pour plus de détails sur la création de dessins et de graphismes.
La gestion des couleurs pour plus de détails sur la gestion des couleurs logiques et physiques.
EXEMPLE.
REM --- Importation des modules ---
REM --- Module de la bibliothèque BBC BASIC ---
INSTALL @lib$ + "box2dlib.bbc"
REM --- INITIALISATION GENERALE ---
REM --- Initialisation et création du monde ---
PROC_b2Init
kmonde = FN_b2CreateWorld( 0 , -9.81 )
REM --- Creation des corps et des formes associees ---
kchassis = FN_b2DynamicBody( kmonde , 0 , 2 , 2 , .5 , 1 , 0 , 0, 0 )
kroue = FN_b2DynamicBody( kmonde , 0 , 1.2 , .4 , 1 , 0 , 0, 0 )
REM --- Localisation de la première collision ---
kcollision = FN_b2ContactListWorld( monde )
kindex = 1
REM --- A faire tant qu'il y a des collisions actives non traitées ---
WHILE kcollision <> 0
REM --- Traitement de la collision ---
PROC_b2GetContact ( kcollision , kforme_A , kforme_B , kcote_A , kcote_B )
kcorps_A = FN_b2FixtureGetBody( kforme_A ) : REM - identification et mémorisation du corps associé a la forme A
kcorps_B = FN_b2FixtureGetBody( kforme_B ) : REM - identification et mémorisation du corps associé a la forme B
PRINT "Collision " ; kindex ; " (Id : " ; kcollision ; " ) contact entre " ; kcorps_A ; " et " ; kcorps_B ; ". "
REM --- Collision suivante ---
kcollision = FN_b2ContactGetNext( kcollision )
kindex += 1
ENDWHILE
REM --- Fermeture de box2dlib ---
PROC_b2Exit
REM --- Fin du programme ---
END
Votre aide est précieuse pour améliorer ce site, alors n'hésitez pas à faire part de
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.