I found about this using debug renderer. When game starts, everything is in order. But when some collision happens, sprite's rotation is way larger than its body. When sprite and body match is the time its body is horizontally aligned.
It seems like center of sprite's rotation is far distant. I am using following code.
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());
As you can see, I am even trying to set center of its rotation with setOrigin without success. does anybody have any advice or clue?