используйте b->SetLinearVelocity(b2Vec2(thisVel, 0));
. Если эта постоянная скорость может в конечном итоге измениться на какую-то другую постоянную скорость, вы можете обернуть ее в условное выражение, например
if(b->GetLinearVelocity().x != 0){
b->SetLinearVelocity(b2Vec2(0, 0));
}
Так что вы не применяете одну и ту же скорость каждый тик (хотя вполне возможно, что box2d позаботится об этом за вас, не уверен в этом).
Я столкнулся с той же проблемой, как заставить тела двигаться с постоянной скоростью, и еще одна вещь, которую я рекомендую, это убедиться, что поверхность / среда, по которой движется ваше тело, не имеет трения - таким образом, они никогда не будут замедлите после того, как вы установите их скорость.