Объект с постоянной скоростью в симуляции Box2D

Я хотел бы сделать игру, похожую на игру «Разрушитель кирпичей», но с кирпичами, которые реагируют на физику. Я установил в мире нулевую гравитацию, а кирпичи имеют большой набор линейных и угловых сбросов.

Но у меня проблемы с мячом. Я хотел бы, чтобы мой мяч все время имел одну и ту же постоянную скорость. Даже после столкновения с кирпичами, стенами и веслами (да, у меня их 2). Я знаю, что это не то, как работает физика.

Но есть ли способ сделать так, чтобы мяч не терял скорости при контакте с некоторыми телами? И заставить мяч мгновенно отскакивать от кирпичей, не теряя энергии, а прикладывая силу к ним (кирпичам)?


person Hooch    schedule 21.02.2014    source источник


Ответы (1)


Я тоже это искал, но в AS3 я нашел то, что хотел для С++. После прочтения я думаю, что ниже вы намеревались переместить объект с постоянной скоростью, используя физику Box2D. Я также опубликую ссылку, хотя не рекомендуется отвечать на вопросы ссылками, так как они могут сломаться в будущем. Постоянная скорость

  b2Vec2 vel = body->GetLinearVelocity();
    float desiredVel = 0;
    switch ( moveState )
    {
      case MS_LEFT:  desiredVel = -5; break;
      case MS_STOP:  desiredVel =  0; break;
      case MS_RIGHT: desiredVel =  5; break;
    }
    float velChange = desiredVel - vel.x;
    float impulse = body->GetMass() * velChange; //disregard time factor
    body->ApplyLinearImpulse( b2Vec2(impulse,0), body->GetWorldCenter() );
person RAO    schedule 26.05.2014