мир box2d :: все такое легкое!

я использую box2d 2.1.2 с cocos2d 0.99.4

в моем мире все легкое, нет ощущения уронить камень или коробку!! все падает медленно с той же скоростью

b2Vec2 gravity; 
gravity.Set(0.0f, -10.0f);
bool doSleep = true;
world = new b2World(gravity, doSleep);

и мои объекты:

b2BodyDef *TBodyDef = new b2BodyDef;
    TBodyDef->position.Set(100, 200);
    b2Body *TBody = world->CreateBody(TBodyDef);
    TBody->SetType(b2_dynamicBody);
    TBody->SetAwake(true);
    b2CircleShape TCircleShape;
    TCircleShape.m_radius = 20;
    b2FixtureDef TFixtureDef;
    TFixtureDef.shape = &TCircleShape;
    TFixtureDef.friction = 0.1;
    TFixtureDef.density = 0.1;
    TFixtureDef.restitution = 1;
    TFixtureDef.filter.categoryBits = COLLISION_BIT_GP;
    TFixtureDef.filter.maskBits = COLLISION_BIT_TERRAIN;
    TBody->CreateFixture(&TFixtureDef);

    b2BodyDef *TBodyDef1 = new b2BodyDef;
    TBodyDef1->position.Set(200, 200);
    b2Body *TBody1 = world->CreateBody(TBodyDef1);
    TBody1->SetType(b2_dynamicBody);
    TBody1->SetAwake(true);
    b2CircleShape TCircleShape1;
    TCircleShape1.m_radius = 20;
    b2FixtureDef TFixtureDef1;
    TFixtureDef1.shape = &TCircleShape;
    TFixtureDef1.friction = 0.1;
    TFixtureDef1.density = 0.5;
    TFixtureDef1.restitution = 1;
    TFixtureDef1.filter.categoryBits = COLLISION_BIT_GP;
    TFixtureDef1.filter.maskBits = COLLISION_BIT_TERRAIN;
    TBody1->CreateFixture(&TFixtureDef1);

и мой шаг:

int32 velocityIterations = 8;
int32 positionIterations = 3;

world->Step(dt, velocityIterations, positionIterations);

плотность ничего не меняет в скорости падения. чего не хватает, чтобы сделать его таким плавным: текст ссылки

Спасибо за помощь


person user472171    schedule 11.10.2010    source источник


Ответы (1)


Плотность объектов не влияет на скорость, с которой они падают.

Отрицая сопротивление воздуха и другие, как правило, незначительные эффекты, все объекты ДЕЙСТВИТЕЛЬНО падают с одинаковой скоростью.

Как это проверить: возьмите что-нибудь легкое (например, iPhone 4 ваших друзей) и что-нибудь тяжелое (ваш старый ЭЛТ) и выбросьте их из окна в одно и то же время.

person CiscoIPPhone    schedule 11.10.2010
comment
Вы имеете в виду, что на поверхности Луны один килограмм хлопка падает с той же скоростью, что и один килограмм стали?? - person user472171; 11.10.2010
comment
Да это правда. Мне больше нечего добавить. - person CiscoIPPhone; 12.10.2010
comment
хе-хе, хорошо :=) если я добавлю к этой функции еще одну итерацию, она будет более плавной, но правильно ли это сделать?? -(void) тик:(ccTime)dt { int32 speedIterations = 8; int32 positionIterations = 3; for (int32 i = 0; i ‹ 10; ++i) { world-›Step(dt, speedIterations, positionIterations); мир-›ClearForces(); } } - person user472171; 12.10.2010
comment
но я предпочел ваш первый ответ, прежде чем менять ti на этот :=) - person user472171; 12.10.2010
comment
Я не знаю, почему это может быть более плавным, поскольку вы выполняете больше вычислений за кадр ... лучше спросить на форуме box2D. - person CiscoIPPhone; 12.10.2010
comment
ну действительно, вы правы, на самом деле это не меняет расстояние, которое мой мяч преодолевает при запуске, хммм, я жду одобрения от администратора box2d :=) в любом случае спасибо за вашу помощь :=) - person user472171; 12.10.2010
comment
Наконец, у меня возникла проблема, потому что мои тела были огромными, я не использовал PTM_RATIO, уффф :=) - person user472171; 13.10.2010