Bonjour, je cherche quelqu'un connaissant le moteur box2D, de préférence dans sa version java.
J'ai retranscrit en java le code C proposé dans le tutoriel "Hello Box2D" du chapitre 2 du manuel officiel, mais cela ne marche pas et je ne comprend pas.
Je joint la source, je n'obtient aucun changement des valeurs de position et d'angle.
Le principe c'est sa :
On crée un "monde" avec son système de collision (AABB) et sa gravité.
On crée un corps avec ou sans masse, avec ou sans formes associées.
Ensuite on test en faisant défiler le temps dans le monde et on observe les valeurs du corps.
Merci de votre aide svp ..
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56 /// MONDE //////////////////////////////////////////// // type de monde AABB wordAABB = new AABB(); Vec2 lowerBound = new Vec2(-100, -100); Vec2 upperBound = new Vec2(100, 100); // set upper et lower wordAABB.lowerBound = lowerBound; wordAABB.upperBound = upperBound; // vecteur2d de gravité Vec2 gravity = new Vec2(0, -10); // création du monde World monde = new World(wordAABB, gravity, true); //////////////////////////////////////////////////////// // création d'un body avec bodyDef et association au monde Body corpTest = new Body(new BodyDef(), monde); // définition d'un polygone PolygonDef defPoly = new PolygonDef(); defPoly.setAsBox(20, 300); defPoly.density = 10; defPoly.friction = 0.5f; // définition d'un cercle CircleDef defCercle = new CircleDef(); defCercle.radius = 4; defCercle.density = 10; defCercle.friction = 0.3f; // association des pièces au corps corpTest.createShape(defPoly); corpTest.createShape(defCercle); // calcule de la masse en fonction des pièces corpTest.setMassFromShapes(); // ou définition direct de la masse du corps (évite la création de pièces) // corpTest.m_mass = 200; /// SIMULATION /////////////////////////////////////// Vec2 corpPos; float corpAngle; float timeStep = 1.0f / 60.0f; int iterations = 10; for (int i = 0; i < 60; i++) { monde.step(timeStep, iterations); corpPos = corpTest.getPosition(); corpAngle = corpTest.getAngle(); System.out.println("x:"+corpPos.x+" y:"+ corpPos.y+" a:"+ corpAngle); } //////////////////////////////////////////////////////
Partager