Как я могу заставить Box2D создавать только один экземпляр тела?

Я только назвал тело-> 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
На скриншотах учебника показан только один экземпляр созданного прибора. Я что-то здесь упускаю?

0

Решение

«Тестовая площадка» вызывает Step несколько раз, и вы создаете экземпляры в каждом вызове.
Обратите внимание, что учебник все настройки в FooTest конструктор, поэтому он запускается только один раз.

Вы переместили установку из конструктора в Step функционировать по какой-то причине.
Чуть раньше в этом уроке написано: «если вы не делаете ничего особенного для рендеринга или управления физикой, вам не нужно переопределять Step ()».

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector