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)); }