c++ - 如何让 Box2D 只创建一个实体实例?

标签 c++ box2d testbed

我只调用了 body->CreateFixture(&fixtureDef) 一次,但 Testbed 一直在创建实体。这是我的代码:

#ifndef FOOTEST_H
#define FOOTEST_H
#define DEGTORAD 0.0174532925199432957f
#define RADTODEG 57.295779513082320876f    

class FooTest : public Test
    {
        public:
        FooTest() { } //do nothing, no scene yet

        void Step(Settings* settings)
        {
            //run the default physics and rendering
            Test::Step(settings);

        b2BodyDef myBodyDef;
        myBodyDef.type = b2_dynamicBody;
        myBodyDef.position.Set(0, 20);
        b2Body *dynamicBody = m_world->CreateBody(&myBodyDef);

        b2PolygonShape polygonShape;
        b2FixtureDef myFixtureDef;
        myFixtureDef.shape = &polygonShape;
        myFixtureDef.density = 1;

        for(int i=0;i<4;i++){
        b2Vec2 pos(sinf(i*90*DEGTORAD), cos(i*90*DEGTORAD));
        polygonShape.SetAsBox(1, 1, pos, 0);
        dynamicBody->CreateFixture(&myFixtureDef);
        }


        myBodyDef.type = b2_staticBody;
        myBodyDef.position.Set(0, 0);

        b2Body *staticBody = m_world->CreateBody(&myBodyDef);

        b2EdgeShape edgeShape;
        edgeShape.Set( b2Vec2(-15,0), b2Vec2(15,3) );

        myFixtureDef.shape = &edgeShape;
        staticBody->CreateFixture(&myFixtureDef);
        }

        static Test* Create()
        {
            return new FooTest;
        }
    };  
#endif

我正在学习本教程: iForce2D 本教程的屏幕截图仅显示了所创建夹具的一个实例。我在这里错过了什么吗?

最佳答案

“Testbed”重复调用 Step,您在每次调用中创建实例。
请注意,本教程在 FooTest 构造函数中进行了所有设置,因此它只运行一次。

出于某种原因,您已将设置从构造函数移至 Step 函数。
就在该教程的前面一点,它说“如果您没有为渲染或物理控制做任何特殊的事情,则不需要覆盖 Step()”。

关于c++ - 如何让 Box2D 只创建一个实体实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16009874/

相关文章:

c++ - 未检测到 SDL 按键事件

java - 如何在 Java 中正确旋转多个对象?

java - body 在不施加任何力的情况下移动? (方框2d)

javascript - Box2dweb 禁止移动

angular - 测试平台:错误:无法解析 PriDateInput 的所有参数:(?)

angular - 无法在 Angular Testing 用例中使用 TestBed.overrideProvider 覆盖 MAT_DIALOG_DATA 提供程序

testing - 试验台和模拟器之间的主要区别是什么?

c++ - 内存效率 - 循环中的 Eigen::VectorXd

c++ - 实现智能指针时引用链接相对于引用计数的优势?

c++ - 将 vector<T> 转换为 vector<const T>