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

PROC_b2SetFilter()

DESCRIPTION.


La procédure PROC_b2SetFilter() retourne la valeur personnalisée associée à une fixture dans un monde physique Box2d.




SYNTAXE.


kdonnee = PROC_b2SetFilter( fixture , categorie , reagir , famille )

)




REMARQUES.


fixture doit être l'identifiant de la variable ayant reçu la valeur retournée par l'appel d'une fonction ayant créée une fixture.


categorie doit être un nombre entier indiquant à quelles catégories appartient une fixture d'un corps dans un monde physque Box2d, il peut y avoir jusqu'à 16 catégories de fixture.


On ajoutera a categorie la valeur 1 pour la catégorie 0 ; 2 pour la catégorie 1 ;  4 pour la catégorie 2 ; 8 pour la catégorie 3 ; 16 pour la catégorie 4 ; 32 pour la catégorie 5 ; 64 pour la catégorie 6 ;128 pour la catégorie 7 ; 256 pour la catégorie 8 ; 512 pour la catégorie 9 ; 1024 pour la catégorie 10 ; 2048 pour la catégorie 11 ; 4096 pour la catégorie 12 ; 8192 pour la catégorie 13 ; 16384 pour la catégorie 14 ; 32768 pour la catégorie 15. Par exemple, si pour qu'une fixture appartienne aux catégories 5, 8 et 11, categorie vaudra : 32 + 256 + 2048 = 2336.


reagir doit être un nombre entier indiquant à quelles catégories une fixture d'un corps dans un monde physique Box2d. La valeur de reagir est calculée de la même façon que categorie. Par exemple, si pour qu'une fixture collisionne avec les fixtures catégories 6, 12 et 13, reagir vaudra : 64 + 4096 + 8192 = 12352.


famille doit être un nombre entier indiquant à quelle famille appartient la fixture et indique certaines conditions spéciales pour les collisions entre membre d'une même famille : 

- 0, aucune règle spéciale ne s'applique ;

- positif, les fixtures de cette famille collisionnent toujours entre eux ; 

- négatif, les fixtures de cette famille ne collisionnent jamais entre eux.


Par exemple - si deux fixtures, ou plus, ont 4, valeur positive, pour famille : elle collisionneront toujours entre elles, même si leur catégories n'appartiennent pas à reagir. Par contre, si elles ont -2, valeur négative, elle ne collisionneront jamais entre elles, même si leurs catégories appartienne à reagir.



Note : les catégories ne sont pas imposées par Box2d. L'utilisateur est libre de définir ses propre catégorie, la valeur à laquelle elles correspondent et à quel type de corps appartient une catégorie. 


Pour une meilleure lisibilité du script, on pourra affecter les valeurs des différentes catégories à une variable. On pourra enssuite additionner les variables correspondantes pour obtenir les valeurs de categorie, reagir et special. Par exemple : 

kavatar = 1

kballe = 2

kennemi = 4

 kprojectile = 8

ksol = 16

keau = 32

kpoisson = 64

koiseau = 128

ksante = 256

PROC_b2SetFilter( kjoueurF , kavatar , ( kprojectile + ksol + keau + kpoisson + koiseau + ksante ) , 0 )



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_b2SetFilter() 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 d'un plateau ---

kplateau = FN_b2DynamicBody( kmonde , 10 , 5 , .64 , 15 , -.5 , -.25 , .02 , 0 )


REM --- Création d'une fixture rectangulaire ---

kplateauF = FN_b2BoxFixture( kplateau , 0 , 0 , 0 , 1 , 0.5 , 0.3 , 0.2 , 1.0 )

PROC_b2SetFilter( kplateauF , 1024 , 642 , 0 )


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

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