I'm making a space game with LibGDX and Box2D. I made a video here to illustrate the issue.
Verbal description: When objects collide, they sometimes get stuck together and are then suddenly separated by a strong force.
Both objects have identical body definitions and fixtures:
bod = new BodyDef();
bod.type = type;
bod.allowSleep = false;
shape = new CircleShape();
shape.setRadius(values[0]);
fix = new FixtureDef();
fix.restitution = 0f;
fix.friction = 1f;
fix.shape = shape;
fix.density = 1f;
worldBod = world.createBody(bod);
worldBod.setTransform(position.x, position.y, 0);
worldBod.createFixture(fix);
Why might this be happening? How can I fix it?
Update: Here is some more info.
The Player class contains a function update(float deltaTime) with the rest listed below
force.x += (directionVector.x * SPEED)*deltaTime;
force.y += (directionVector.y * SPEED)*deltaTime;
//This helps keep the object in control from preventing forces greater then 3
if(force.x >= 3){
force.x = 3;
}if(force.x <= -3){
force.x = -3;
}if(force.y >= 3){
force.y = 3;
}if(force.y <= -3){
force.y = -3;
}
//This quickly reduces the force back down to 0
force.x *= 0.5;
force.y *= 0.5;
this.getBody().applyForceToCenter(force, true);
In the render part of the main game class I step the world with
gameWorld.step(Gdx.graphics.getDeltaTime(), 6, 6);
//although increasing or decreasing the itterations seems not to help
and Finally the hexagon's are created using the ShapeRenderer pulling the position and
sr.setProjectionMatrix(camera.combined);
sr.begin(ShapeType.Line);
sr.circle(p1.getBody().getPosition().x, p1.getBody().getPosition().y, 1);
sr.circle(barrierPole.getBody().getPosition().x, barrierPole.getBody().getPosition().y, 1);
sr.end();