@Override
  public void create() {
    final float w = Gdx.graphics.getWidth();
    final float h = Gdx.graphics.getHeight();
    // create the camera and the SpriteBatch
    camera = new OrthographicCamera();
    camera.setToOrtho(false, w, h);

    viewport = new FitViewport(VIRTUAL_WIDTH, VIRTUAL_HEIGHT, camera);

    batch = new SpriteBatch();

    img = new Texture(Gdx.files.internal("playerSprite_1.png"));

    // create a new sprite based on our image
    sprite = new Sprite(img);

    sprite.setPosition(ScreenWidth / 2 - playerWidth, ScreenHeight / 2 - playerHeight);
    tiledMap = new TmxMapLoader().load("ritualsite.tmx");
    tiledMapRenderer = new OrthogonalTiledMapRendererWithSprites(tiledMap);
    tiledMapRenderer.addSprite(sprite);

    Gdx.input.setInputProcessor(this);
    targetPos = new Vector2(sprite.getX(), sprite.getY());

    // create a sprite batch
    batch = new SpriteBatch();

    direction = new Vector2();
    playerDirection = new Vector2();
    getCollidingRects();
  }
  @Override
  public void render() {
    Gdx.gl.glClearColor(0, 0, 0.2f, 1);
    Gdx.gl.glBlendFunc(GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

    // tell the camera to update its matrices.

    updateCamera();

    tiledMapRenderer.setView(camera);
    tiledMapRenderer.render();

    if (Gdx.input.isTouched()) {
      final Vector3 touchPos = new Vector3();
      touchPos.set(Gdx.input.getX(), Gdx.input.getY(), 0);
      camera.unproject(touchPos);
      targetPos.x = touchPos.x - sprite.getWidth() / 2;
      targetPos.y = touchPos.y - sprite.getHeight() / 2;
    }

    updateTargetPosition();
  }