Esempio n. 1
0
  public void calcDirection(float delta) {
    calcSpeed = speed * delta;

    // berechne mouseposition abhängig von der position des Spielers auf dem Screen
    if (Mouse.getX() < screenx) {
      distX = -(screenx - Mouse.getX());
    } else {
      distX = Mouse.getX() - screenx;
    }
    if (World.TILES_ON_SCREEN_HEIGHT * 32 - Mouse.getY() < screeny) {
      distY = -(screeny - (World.TILES_ON_SCREEN_HEIGHT * 32 - Mouse.getY()));
    } else {
      distY = World.TILES_ON_SCREEN_HEIGHT * 32 - Mouse.getY() - screeny;
    }

    // für jeden viertelkreis/quadranten bestimme den winkel und passe die richtung an
    if ((distX > 0) && (distY > 0)) { // maus unten rechts
      angle = Math.toDegrees(Math.atan((distX / distY)));

      if (angle > 67.5) {
        direction = World.PlayerDirection.RIGHT;
      } else if ((angle <= 67.5) && (angle >= 22.5)) {
        direction = World.PlayerDirection.RIGHTDOWN;
      } else {
        direction = World.PlayerDirection.DOWN;
      }
      cursorX = (float) (World.playerMouseRadius * Math.sin(Math.toRadians(angle)));
      cursorY = (float) (World.playerMouseRadius * Math.cos(Math.toRadians(angle)));
    } else if ((distX > 0) && (distY < 0)) { // maus oben rechts
      angle = Math.toDegrees(Math.atan((distX / distY * -1)));

      if (angle > 67.5) {
        direction = World.PlayerDirection.RIGHT;
      } else if ((angle <= 67.5) && (angle >= 22.5)) {
        direction = World.PlayerDirection.RIGHTUP;
      } else {
        direction = World.PlayerDirection.UP;
      }
      cursorX = (float) (World.playerMouseRadius * Math.sin(Math.toRadians(angle)));
      cursorY = -(float) (World.playerMouseRadius * Math.cos(Math.toRadians(angle)));
    } else if ((distX < 0) && (distY > 0)) { // maus unten links
      angle = Math.toDegrees(Math.atan((distX * -1 / distY)));

      if (angle > 67.5) {
        direction = World.PlayerDirection.LEFT;
      } else if ((angle <= 67.5) && (angle >= 22.5)) {
        direction = World.PlayerDirection.LEFTDOWN;
      } else {
        direction = World.PlayerDirection.DOWN;
      }
      cursorX = -(float) (World.playerMouseRadius * Math.sin(Math.toRadians(angle)));
      cursorY = (float) (World.playerMouseRadius * Math.cos(Math.toRadians(angle)));
    } else if ((distX < 0) && (distY < 0)) { // maus oben links
      angle = Math.toDegrees(Math.atan((distX * -1 / distY * -1)));

      if (angle > 67.5) {
        direction = World.PlayerDirection.LEFT;
      } else if ((angle <= 67.5) && (angle >= 22.5)) {
        direction = World.PlayerDirection.LEFTUP;
      } else {
        direction = World.PlayerDirection.UP;
      }
      cursorX = -(float) (World.playerMouseRadius * Math.sin(Math.toRadians(angle)));
      cursorY = -(float) (World.playerMouseRadius * Math.cos(Math.toRadians(angle)));
    }

    setX(x + calcSpeed * (cursorX / 64));
    setY(y + calcSpeed * (cursorY / 64));
  }