Ich bekomme diesen seltsamen Fehler, wenn ich mein Programm, das Box2D
verwendet, was wirklich unerwartet ist, weil es in einer Datei ist, die nirgends mit meinem Projekt verbunden ist (unbuilt Ordner nicht mit meinem Projekt verknüpft). Ich erhielt eine Kopie für Box2D
für VS12
und baute es für mein Projekt und Setup-ed das Projekt nach einem Tutorial hier: https://www.youtube.com/watch?v=kEClRFKyGkw&list=PLSPw4ASQYyymu3PfG9gxywSPghnSMiOAW&index=53Assertion fehlgeschlagen: Bereich> 1.19209
Hier ist mein Code:
void Box::init(b2World* world, const glm::vec2& position, const glm::vec2& dimensions)
{
m_dimensions = dimensions;
b2BodyDef boxDef;
boxDef.type = b2_dynamicBody;
boxDef.position.Set(position.x, position.y);
m_body = world->CreateBody(&boxDef);
b2PolygonShape boxShape;
boxShape.SetAsBox(position.x/2.0f, position.y/2.0f);
b2FixtureDef fixtureDef;
fixtureDef.shape = &boxShape;
fixtureDef.density = 1.0f;
fixtureDef.friction = 0.3f;
m_fixture = m_body->CreateFixture(&fixtureDef);
}
Wo ich die init()
genannt habe:
b2Vec2 gravity(0.0f, -9.8f);
m_world = std::make_unique<b2World>(gravity);
b2BodyDef groundBodyDef;
groundBodyDef.position.Set(0.0f, -10.0f);
b2Body* groundBody = m_world->CreateBody(&groundBodyDef);
b2PolygonShape groundShape;
groundShape.SetAsBox(50.0f, 10.0f);
groundBody->CreateFixture(&groundShape, 0.0f);
Box newBox;
newBox.init(m_world.get(), glm::vec2(0.0f, 14.0f), glm::vec2(15.0f, 15.0f));
m_boxes.push_back(newBox);
A bis Fenster Pop wie folgt aus:
Der Fehler auf meiner Konsole ausgegeben:
Assertion failed: Bereich> 1,19209 2896e-07F, path_to_unbuild_box2d \ box2d_v2.3.0 \ box2d \ box2d \ Kollision \ Formen \ b2 polygonshape.cpp, Linie 422
Hier ist, wo der Fehler auftritt (wenn ich auf Retry
) line 336 b2Fixture.h
:
inline void b2Fixture::GetMassData(b2MassData* massData) const
{
m_shape->ComputeMass(massData, m_density);
}
Problem 1 fi feste
boxShape.SetAsBox(dimensions.x/2.0f, dimensions.y/2.0f); ///Instead of position.
der Wert von 'position.x = 0' und' position.y = 14' ist das ungültig? – ASK
Denken Sie darüber nach: Sie versuchen, eine Box mit einer Breite von 0 und einer Höhe von 14 zu erstellen. Ist eine Box mit einer Breite von 0 gültig? – Cornstalks
danke das war ein logischer Fehler Ich musste 'Dimension' – ASK