Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class GamePlay extends InputAdapter implements Screen{
- private OrthographicCamera cam;
- private Box2DDebugRenderer debugRenderer;
- private World world;
- private Body playerBody;
- private Array<Body> clouds;
- private Vector3 touchPoint = new Vector3();
- private Rope rope;
- private SpriteBatch batch;
- private Sprite bgSprite;
- private Sprite playerSprite;
- public GamePlay(){
- world = new World(new Vector2(0, -9.81f), true);
- cam = new OrthographicCamera();
- cam.setToOrtho(false, Gdx.graphics.getWidth() / PPM, Gdx.graphics.getHeight() / PPM);
- debugRenderer = new Box2DDebugRenderer();
- rope = new Rope(world);
- clouds = new Array<Body>();
- batch = new SpriteBatch();
- createBodies();
- Gdx.input.setInputProcessor(new InputManager(cam, playerBody, clouds, rope));
- bgSprite = new Sprite(new Texture(Gdx.files.internal("background.png")));
- bgSprite.setSize(Gdx.graphics.getWidth() / PPM, Gdx.graphics.getHeight() / PPM);
- playerSprite = new Sprite(new Texture("playerGuy.png"));
- playerSprite.setSize(30 / PPM,60 / PPM);
- playerSprite.setOrigin(playerSprite.getWidth() / 2, playerSprite.getHeight() / 2); //ROTATION WRONG, TO BE FIXED LATER
- }
- @Override
- public void show() {}
- @Override
- public void render(float delta) {
- Gdx.gl.glClearColor(0f, 0.4f, 0.7f, 1f); // clear screen
- Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
- cam.position.x = playerBody.getPosition().x;
- batch.setProjectionMatrix(cam.combined); //begin drawing stuff
- batch.begin();
- bgSprite.draw(batch);
- bgSprite.setPosition(cam.position.x - bgSprite.getWidth() / 2, cam.position.y - bgSprite.getHeight() / 2);
- playerSprite.draw(batch);
- playerSprite.setPosition(playerBody.getPosition().x - playerSprite.getWidth() / 2,
- playerBody.getPosition().y - playerSprite.getHeight() / 2);
- playerSprite.setRotation(playerBody.getAngle() * MathUtils.radiansToDegrees);
- batch.end(); //end drawing stuff
- world.step(1f / 60f, 8, 3); //update and render
- cam.update();
- debugRenderer.render(world, cam.combined);
- }
- @Override
- public void dispose() {
- world.dispose();
- debugRenderer.dispose();
- batch.dispose();
- bgSprite.getTexture().dispose();
- playerSprite.getTexture().dispose();
- }
- private void createBodies(){
- BodyDef bdef = new BodyDef();
- FixtureDef fdef = new FixtureDef();
- //bodydef
- bdef.type = BodyDef.BodyType.StaticBody;
- bdef.position.set(0 / PPM, 460 / PPM);
- //shape
- PolygonShape ceilingShape = new PolygonShape();
- ceilingShape.setAsBox(20 / PPM, 4 / PPM);
- //fixturedef
- fdef.shape = ceilingShape;
- //create bunch of roof segments
- for (int i = 0; i < 150; i++) {
- bdef.position.x += 50 / PPM;
- clouds.add(world.createBody(bdef));
- clouds.get(i).createFixture(fdef);
- }
- // TEMPORARY FLOOR
- ceilingShape.setAsBox(400 / PPM, 4 / PPM);
- bdef.position.set(250 / PPM, -10 / PPM);
- world.createBody(bdef).createFixture(fdef);
- //reuse for player
- bdef.type = BodyDef.BodyType.DynamicBody;
- bdef.position.set(600 / PPM, 400 / PPM);
- bdef.linearDamping = 0.6f;
- CircleShape playerShape = new CircleShape();
- playerShape.setRadius(10 / PPM);
- fdef.shape = playerShape;
- fdef.density = 1f;
- fdef.restitution = 0.4f;
- fdef.friction = 0.2f;
- playerBody = world.createBody(bdef);
- playerBody.createFixture(fdef);
- }
- @Override
- public void resize(int width, int height) {
- cam.viewportWidth = Gdx.graphics.getWidth() / PPM; // 1pixel >> 100m pixel ratio
- cam.viewportHeight = Gdx.graphics.getHeight() / PPM;
- }
- @Override
- public void pause() {}
- @Override
- public void resume() {}
- @Override
- public void hide() {}
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement