Eu descobri isso usando um renderizador de depuração. Quando o jogo começa, tudo está em ordem. Mas quando ocorre uma colisão, a rotação do sprite é muito maior que seu corpo. O sprite e o corpo combinam quando o corpo está completamente horizontal.
A origem da rotação do sprite parece muito distante de onde deveria estar. Aqui está o meu código:
Sprite sprite = data.sprite;
position = body.getPosition();
sprite.setPosition(
position.x - sprite.getWidth() / 2,
position.y - sprite.getHeight() / 2
);
sprite.setOrigin(position.x, position.y);
sprite.setRotation(MathUtils.radiansToDegrees * body.getAngle());
Como você pode ver, estou até tentando definir o centro de sua rotação setOrigin
sem sucesso. Como posso consertar isso?
fonte