Это потому, что ваш игрок создан как динамическое тело. Таким образом, сила тяжести применяется к игроку на каждом этапе симуляции, заставляя его / ее изменять скорость.
Поставь своего игрока b2_kinematicBody
- тогда никакие силы не будут применены к нему. Если вы по-прежнему хотите, чтобы игрок был динамичным, примените силу -playerMass*gravityVector
каждый шаг (или установите параметр autoClearForces в b2World на false и примените силу один раз), чтобы удалить силу гравитации.