Je travaille avec libGDX. Quand je suis en train de Box2D pour créer un appareil ayant une forme de polygone i .: rencontrer l'erreur suivanteBox2D renvoie une erreur lors de la création du projecteur avec Polygonshape
java: ./Box2D/Collision/b2Distance.h:103: const b2Vec2& b2DistanceProxy::GetVertex(int32) const: Assertion `0 <= index && index < m_count' failed.
Quand je ne fais pas de world.step()
Box2D, je ne suis pas cette erreur plus.
J'ai donc tout mis en commentaire dans mon WorldContactListener et j'ai de nouveau ajouté world.step().
Je reçois toujours la même erreur. Lorsque je remplace la forme polygonale par une forme circulaire, tout fonctionne correctement. Voici donc comment je crée mon polygone forme:
PolygonShape shape = new PolygonShape();
float ppm = Game.PixelsPerMeter;
Vector2[] vertices = new Vector2[3];
vertices[0] = new Vector2(0f/ppm , 0f );
vertices[1] = new Vector2(1/ppm , 1f/ppm );
vertices[2] = new Vector2(0f/ppm ,1f/ppm);
shape.set(vertices);
Et voici comment je suis d'ajouter tout ce monde Box2D:
float ppm = Game.PixelsPerMeter
BodyDef bdef = new BodyDef();
bdef.position.set(100/ ppm, 200/ ppm);
bdef.type = BodyDef.BodyType.DynamicBody;
b2dbody = world.createBody(bdef);
FixtureDef mainFdef = new FixtureDef();
mainFdef.shape = Shape; //this is the shape from above of course
b2dbody.createFixture(mainFdef).setUserData(this);
Je serais vraiment heureux si vous pouviez me dire Qu'est-ce qui ne va pas!
Merci
Quelle est la valeur de ppm? – IronMonkey
@IronMonkey c'est 75 – strammermax
Essayez shape.set (vertices, vertices.length); – IronMonkey