Box2D
を使用しているプログラムを実行すると、私のプロジェクトに関連していないファイル(ビルドされていないフォルダがプロジェクトにリンクされていない)にあるため、この予期しないエラーが発生します。私はVS12
ためBox2D
のためのコピーを入手し、ここでのチュートリアル以下の私のプロジェクトとセットアップ-EDのプロジェクトのためにそれを建て:https://www.youtube.com/watch?v=kEClRFKyGkw&list=PLSPw4ASQYyymu3PfG9gxywSPghnSMiOAW&index=53アサーション失敗:area> 1.19209
ここに私のコードです:
私はinit()
呼ばれてきた
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);
}
:
:このよう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);
ウィンドウポップのアップ私のコンソール上に印刷された3210
エラー:
アサーションに失敗しました:エリア> 1.19209 2896e-07F、 path_to_unbuild_box2d \ box2d_v2.3.0 \ BOX2D \ BOX2D \衝突\形状\ polygonshape.cpp、ラインB2 422
エラーが発生した場所(私はRetry
をクリックしたとき)ここでline 336 b2Fixture.h
だ:
inline void b2Fixture::GetMassData(b2MassData* massData) const
{
m_shape->ComputeMass(massData, m_density);
}
問題1 Fiの(で述べたように、メッセージを「アサーション失敗」)
boxShape.SetAsBox(dimensions.x/2.0f, dimensions.y/2.0f); ///Instead of position.
「position.x = 0」と「position.y = 14」の値がこれは無効ですか? – ASK
考えてみましょう:幅0、高さ14のボックスを作成しようとしています。幅0のボックスは有効ですか? – Cornstalks
私が 'dimension' – ASK