Mover la cámara en coordenadas mundiales y hacer que tu personaje se mueva por el mundo es la forma más fácil de abordar este problema, trabajar en coordenadas mundiales significa que no necesitas hacer ningún cálculo adicional cuando se reduce a todos los otros sistemas que deben funcionar en un sistema de coordenadas relativas y también entender dónde están en las coordenadas mundiales
Dado que está trabajando en 2D, otro buen consejo es hacer una partición espacial, la forma más fácil sería crear un sistema de red virtual mundial, esto le permitirá administrar cada mosaico individualmente mediante la asociación de sprites y otros recursos por mosaico, por lo que en esencia el proceso sería:
cree una clase de mosaico que pueda contener las coordenadas de límite para el mosaico y los recursos que ese mosaico específico pueda necesitar (sprites, enemigos, etc.).
decida el tamaño de su mundo y cree una matriz 2D (puede usar una dimensión y acceder a ella como 2D) de mosaicos, cada uno representando un poco de su mundo con todos sus recursos asociados.
solo extrae recursos del mosaico en el que se encuentra el jugador y sus vecinos.
Con una cuadrícula puede averiguar fácilmente en qué mosaico se encuentra el jugador en función de su posición con respecto al inicio de la cuadrícula.
Para solucionar el problema que mencionó acerca de la cámara, debe hacer que el jugador y la cámara sean dos sistemas independientes donde la cámara no se desplazará más allá del centro de los mosaicos de borde, de modo que cuando el jugador viaja a ese mosaico, todavía puede viajar a través del todo el mosaico ya que está limitado por las coordenadas mundiales (es decir, ya no está centrado en la pantalla) pero la cámara está bloqueada.