私は自分のシンプルなエンジンを作っています.ECSを成功させました。今は物理学のBox2Dを実装しようとしています。私は、物理的な計算を行う "RigidBody2D"というタイプのコンポーネントを持っています。(これはStart、Awake、Updateの各機能を持つコンポーネントのようなUnity3Dを使っていますが、私はシステムを使用しません):Box2D:アサーションが失敗し、Wntdll.pdbがロードされない
'RigidBody.h'
#pragma once
#include "Component.h"
class RigidBody2D : public Component
{
private:
float Density = 1.f;
float Friction = 1.f;
b2BodyDef bodyDef;
b2FixtureDef fixtureDef;
b2PolygonShape dynamicBox;
public:
Transfrm* Trans;
b2Body* Body;
RigidBody2D() : Component("RigidBody2D") {
Trans = new Transfrm(b2Vec2(0.f, 0.f), 0.f, b2Vec2(1.f, 1.f));
bodyDef.type = b2_dynamicBody;
bodyDef.position.Set(Trans->Position.x, Trans->Position.y);
Body = CurrentPhysicsWorld->CreateBody(&bodyDef);
dynamicBox.SetAsBox(1.0f, 1.0f);
fixtureDef.shape = &dynamicBox;
fixtureDef.density = GetDensity();
fixtureDef.friction = GetFriction();
Body->CreateFixture(&fixtureDef); // The Line That Causes trouble
};
~RigidBody2D();
};
わかりましたので、すべてが、私は基本的にBOX2D例から例をコピー、正常に見える:
:私は私のコンソールでこれを実行した後、私はこのメッセージを取得するには、「HelloWorld.cppを」とクラスにそれらを実装私は「"Wntdll.pdb Not Loaded, wntdll.pdb contains the debug information required to find the source for the module ntdll.dll"
:私は、この行をコメントする場合、プログラムが実行さ
Body->CreateFixture(&fixtureDef);
、その後のVisual Studio 2015は私のことを示すメッセージが表示されます。私はこの問題を引き起こしてラインがあることが分かったいくつかのテストをした後
"Assertion failed: m_nodeCount == m_nodeCapacity, file ..\..\Box2D\Collision\b2DynamicTree.cpp, line 58"
この問題を引き起こしているのか、なぜBox2Dで初めての作業なのかは分かりません。
EDIT: A MVCEこれでなければならないであろう、あなたはこのコードを実行できるようにするプロジェクトでBOX2Dを設定する必要があります:
#include <Box2D.h>
b2World CurrentWorld;
class World {
public:
b2World physicsWorld;
World() { CurrentWorld = this->physicsWorld; };
~World() {};
};
class RigidBody2D
{
public:
b2Body* Body;
b2BodyDef bodyDef;
b2FixtureDef fixtureDef;
b2PolygonShape dynamicBox;
RigidBody2D() {
bodyDef.type = b2_dynamicBody;
bodyDef.position.Set(Trans->Position.x, Trans->Position.y);
Body = CurrentWorld->CreateBody(&bodyDef);
dynamicBox.SetAsBox(1.0f, 1.0f);
fixtureDef.shape = &dynamicBox;
Body->CreateFixture(&fixtureDef);
}
~RigidBody2D() {};
};
int main() {
World wrld = World();
RigidBody2D body = RigidBody2D();
return 0;
}
おそらくメモリ破損です。 [mvce](http://stackoverflow.com/help/mcve)を提供して、コードをコンパイルして実行して確認してください。 – folibis
@folibisは自分の投稿を編集し、MVCEを追加しました。テストしてください。 – kooldart