Todo es relativo. Realmente, siempre estás transformando tu vista en relación con tu posición fija de jugador.
Entonces, olvidando la pantalla por ahora, digamos que tiene estos 3 pasos (que representan las posiciones a medida que se actualizan en cada ciclo de juego):
playerWorldPosition = 50, 100; objectWorldPosition = 60, 200;
playerWorldPosition = 55, 110; objectWorldPosition = 60, 160;
playerWorldPosition = 60, 120; objectWorldPosition = 60, 120;
(como x, y en cada caso)
Como puede ver, el jugador está volando hacia arriba o saltando y moviéndose ligeramente hacia la derecha, mientras que el objeto (podría ser un encendido) está cayendo hacia abajo. El jugador atrapa el powerup. Ahora, ¿cómo dibujas esto en pantalla?
Primero, supongamos que quiere que su jugador esté en el centro de la pantalla en todo momento. Entonces, la vista se bloquea para el jugador: este es el enfoque más simple para visualizar. La posición de su jugador siempre será screenCentre
(es decir screenWidth/2, screenHeight/2
). ¿Cómo se obtiene la posición en pantalla de otros objetos en el mundo?
objectScreenPosition = (objectWorldPosition - playerWorldPosition) + screenCentre;
Puedes ver que esta fórmula funciona incluso para el jugador real, ya que (playerWorldPosition- playerWorldPosition) + screenCentre
es igual a screenCentre
. Por lo tanto, puede aplicar la misma fórmula a cada entidad en su juego, ejecutando una lista. Puede utilizar este enfoque simple para desarrollar otras cosas (como el retraso de la cámara, los casos en que se encuentra en la esquina de un nivel, etc.)