public void render () { Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); world.step(Math.min(0.032f, Gdx.graphics.getDeltaTime()), 3, 4); cam.update(); renderer.render(world, cam.combined); }
@Override public void create () { world = new World(new Vector2(0, -40), true); renderer = new Box2DDebugRenderer(); cam = new OrthographicCamera(28, 20); createWorld(); Gdx.input.setInputProcessor(this); batch = new SpriteBatch(); font = new BitmapFont(Gdx.files.internal("data/arial-15.fnt"), false); }
@Override public void dispose () { world.dispose(); renderer.dispose(); } }
protected void renderBody (Body body) { Transform transform = body.getTransform(); for (Fixture fixture : body.getFixtureList()) { if (drawBodies) { drawShape(fixture, transform, getColorByBody(body)); if (drawVelocities) { Vector2 position = body.getPosition(); drawSegment(position, body.getLinearVelocity().add(position), VELOCITY_COLOR); } } if (drawAABBs) { drawAABB(fixture, transform); } } }
protected void renderBody (Body body) { Transform transform = body.getTransform(); int len = body.getFixtureList().size; Array<Fixture> fixtures = body.getFixtureList(); for (int i = 0; i < len; i++) { Fixture fixture = fixtures.get(i); if (drawBodies) { if (body.isActive() == false && drawInactiveBodies) drawShape(fixture, transform, SHAPE_NOT_ACTIVE); else if (body.getType() == BodyType.StaticBody) drawShape(fixture, transform, SHAPE_STATIC); else if (body.getType() == BodyType.KinematicBody) drawShape(fixture, transform, SHAPE_KINEMATIC); else if (body.isAwake() == false) drawShape(fixture, transform, SHAPE_NOT_AWAKE); else drawShape(fixture, transform, SHAPE_AWAKE); } if (drawAABBs) { drawAABB(fixture, transform); } } }
private void renderBodies (World world) { renderer.begin(ShapeType.Line); if (drawBodies || drawAABBs) { world.getBodies(bodies); for (Iterator<Body> iter = bodies.iterator(); iter.hasNext();) { Body body = iter.next(); if (body.isActive() || drawInactiveBodies) renderBody(body); } } if (drawJoints) { world.getJoints(joints); for (Iterator<Joint> iter = joints.iterator(); iter.hasNext();) { Joint joint = iter.next(); drawJoint(joint); } } renderer.end(); if (drawContacts) { renderer.begin(ShapeType.Point); for (Contact contact : world.getContactList()) drawContact(contact); renderer.end(); } }
private void drawJoint (Joint joint) { Body bodyA = joint.getBodyA(); Body bodyB = joint.getBodyB(); Transform xf1 = bodyA.getTransform(); Transform xf2 = bodyB.getTransform(); Vector2 x1 = xf1.getPosition(); Vector2 x2 = xf2.getPosition(); Vector2 p1 = joint.getAnchorA(); Vector2 p2 = joint.getAnchorB(); if (joint.getType() == JointType.DistanceJoint) { drawSegment(p1, p2, JOINT_COLOR); } else if (joint.getType() == JointType.PulleyJoint) { PulleyJoint pulley = (PulleyJoint)joint; Vector2 s1 = pulley.getGroundAnchorA(); Vector2 s2 = pulley.getGroundAnchorB(); drawSegment(s1, p1, JOINT_COLOR); drawSegment(s2, p2, JOINT_COLOR); drawSegment(s1, s2, JOINT_COLOR); } else if (joint.getType() == JointType.MouseJoint) { drawSegment(joint.getAnchorA(), joint.getAnchorB(), JOINT_COLOR); } else { drawSegment(x1, p1, JOINT_COLOR); drawSegment(p1, p2, JOINT_COLOR); drawSegment(x2, p2, JOINT_COLOR); } }
private void renderBodies (World world) { renderer.begin(ShapeType.Line); if (drawBodies || drawAABBs) { world.getBodies(bodies); for (Iterator<Body> iter = bodies.iterator(); iter.hasNext();) { Body body = iter.next(); if (body.isActive() || drawInactiveBodies) renderBody(body); } } if (drawJoints) { world.getJoints(joints); for (Iterator<Joint> iter = joints.iterator(); iter.hasNext();) { Joint joint = iter.next(); drawJoint(joint); } } renderer.end(); if (drawContacts) { renderer.begin(ShapeType.Point); for (Contact contact : world.getContactList()) drawContact(contact); renderer.end(); } }
protected void renderBody (Body body) { Transform transform = body.getTransform(); for (Fixture fixture : body.getFixtureList()) { if (drawBodies) { drawShape(fixture, transform, getColorByBody(body)); if (drawVelocities) { Vector2 position = body.getPosition(); drawSegment(position, body.getLinearVelocity().add(position), VELOCITY_COLOR); } } if (drawAABBs) { drawAABB(fixture, transform); } } }
private void drawJoint (Joint joint) { Body bodyA = joint.getBodyA(); Body bodyB = joint.getBodyB(); Transform xf1 = bodyA.getTransform(); Transform xf2 = bodyB.getTransform(); Vector2 x1 = xf1.getPosition(); Vector2 x2 = xf2.getPosition(); Vector2 p1 = joint.getAnchorA(); Vector2 p2 = joint.getAnchorB(); if (joint.getType() == JointType.DistanceJoint) { drawSegment(p1, p2, JOINT_COLOR); } else if (joint.getType() == JointType.PulleyJoint) { PulleyJoint pulley = (PulleyJoint)joint; Vector2 s1 = pulley.getGroundAnchorA(); Vector2 s2 = pulley.getGroundAnchorB(); drawSegment(s1, p1, JOINT_COLOR); drawSegment(s2, p2, JOINT_COLOR); drawSegment(s1, s2, JOINT_COLOR); } else if (joint.getType() == JointType.MouseJoint) { drawSegment(joint.getAnchorA(), joint.getAnchorB(), JOINT_COLOR); } else { drawSegment(x1, p1, JOINT_COLOR); drawSegment(p1, p2, JOINT_COLOR); drawSegment(x2, p2, JOINT_COLOR); } }
@Override public void render () { // update the world with a fixed time step long startTime = TimeUtils.nanoTime(); world.step(Gdx.app.getGraphics().getDeltaTime(), 3, 3); float updateTime = (TimeUtils.nanoTime() - startTime) / 1000000000.0f; startTime = TimeUtils.nanoTime(); // clear the screen and setup the projection matrix Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); camera.update(); // render the world using the debug renderer renderer.render(world, camera.combined); float renderTime = (TimeUtils.nanoTime() - startTime) / 1000000000.0f; batch.begin(); font.draw(batch, "fps:" + Gdx.graphics.getFramesPerSecond() + ", update: " + updateTime + ", render: " + renderTime, 0, 20); batch.end(); }
@Override public void create () { // setup the camera. In Box2D we operate on a // meter scale, pixels won't do it. So we use // an orthographic camera with a viewport of // 48 meters in width and 32 meters in height. // We also position the camera so that it // looks at (0,16) (that's where the middle of the // screen will be located). camera = new OrthographicCamera(48, 32); camera.position.set(0, 15, 0); // create the debug renderer renderer = new Box2DDebugRenderer(); // create the world world = new World(new Vector2(0, -10), true); // we also need an invisible zero size ground body // to which we can connect the mouse joint BodyDef bodyDef = new BodyDef(); groundBody = world.createBody(bodyDef); // call abstract method to populate the world createWorld(world); batch = new SpriteBatch(); font = new BitmapFont(Gdx.files.internal("data/arial-15.fnt"), false); }
@Override public void dispose () { renderer.dispose(); world.dispose(); renderer = null; world = null; mouseJoint = null; hitBody = null; }
private void renderBodies (World world) { renderer.begin(ShapeType.Line); if (drawBodies || drawAABBs) { world.getBodies(bodies); for (Iterator<Body> iter = bodies.iterator(); iter.hasNext();) { Body body = iter.next(); if (body.isActive() || drawInactiveBodies) renderBody(body); } } if (drawJoints) { world.getJoints(joints); for (Iterator<Joint> iter = joints.iterator(); iter.hasNext();) { Joint joint = iter.next(); drawJoint(joint); } } renderer.end(); if (drawContacts) { renderer.begin(ShapeType.Point); for (Contact contact : world.getContactList()) drawContact(contact); renderer.end(); } }
private void drawJoint (Joint joint) { Body bodyA = joint.getBodyA(); Body bodyB = joint.getBodyB(); Transform xf1 = bodyA.getTransform(); Transform xf2 = bodyB.getTransform(); Vector2 x1 = xf1.getPosition(); Vector2 x2 = xf2.getPosition(); Vector2 p1 = joint.getAnchorA(); Vector2 p2 = joint.getAnchorB(); if (joint.getType() == JointType.DistanceJoint) { drawSegment(p1, p2, JOINT_COLOR); } else if (joint.getType() == JointType.PulleyJoint) { PulleyJoint pulley = (PulleyJoint)joint; Vector2 s1 = pulley.getGroundAnchorA(); Vector2 s2 = pulley.getGroundAnchorB(); drawSegment(s1, p1, JOINT_COLOR); drawSegment(s2, p2, JOINT_COLOR); drawSegment(s1, s2, JOINT_COLOR); } else if (joint.getType() == JointType.MouseJoint) { drawSegment(joint.getAnchorA(), joint.getAnchorB(), JOINT_COLOR); } else { drawSegment(x1, p1, JOINT_COLOR); drawSegment(p1, p2, JOINT_COLOR); drawSegment(x2, p2, JOINT_COLOR); } }
cam.position.set(player.getPosition().x, player.getPosition().y, 0); cam.update(); renderer.render(world, cam.combined);
@Override public void create () { // setup the camera. In Box2D we operate on a // meter scale, pixels won't do it. So we use // an orthographic camera with a viewport of // 48 meters in width and 32 meters in height. // We also position the camera so that it // looks at (0,16) (that's where the middle of the // screen will be located). camera = new OrthographicCamera(48, 32); camera.position.set(0, 16, 0); // next we setup the immediate mode renderer renderer = new ShapeRenderer(); // next we create the box2d debug renderer debugRenderer = new Box2DDebugRenderer(); // next we create a SpriteBatch and a font batch = new SpriteBatch(); font = new BitmapFont(Gdx.files.internal("data/arial-15.fnt"), false); font.setColor(Color.RED); textureRegion = new TextureRegion(new Texture(Gdx.files.internal("data/badlogicsmall.jpg"))); // next we create out physics world. createPhysicsWorld(); // register ourselfs as an InputProcessor Gdx.input.setInputProcessor(this); }
@Override public void dispose () { world.dispose(); renderer.dispose(); batch.dispose(); font.dispose(); }
debugRenderer.render(world, camera.combined);
public void create () { cam = new OrthographicCamera(48, 32); cam.position.set(0, 15, 0); renderer = new Box2DDebugRenderer(); world = new World(new Vector2(0, -10), true); Body body = world.createBody(new BodyDef()); CircleShape shape = new CircleShape(); shape.setRadius(1f); MassData mass = new MassData(); mass.mass = 1f; body.setMassData(mass); body.setFixedRotation(true); body.setType(BodyType.KinematicBody); body.createFixture(shape, 1); body.setBullet(true); body.setTransform(new Vector2(0, 0), body.getAngle()); body.setLinearVelocity(new Vector2(50f, 0)); }