En un juego de desplazamiento en 2D, ¿deberían moverse los objetos o debería moverse la cámara?

8

Soy nuevo en el diseño de juegos y realmente no sé cómo se hacen las cosas. Estoy pensando en construir un juego para iOS en el que un barco tenga que volar lo más alto posible (a velocidades variables), recogiendo potenciadores, etc., en el camino.

¿Cuál es el camino a seguir aquí? ¿Deberían el fondo y los elementos desplazarse hacia abajo desde la parte superior o la nave realmente debería volar moviendo la vista con ella?

Thomas
fuente
La única respuesta correcta es 'ambos'.
Blecki

Respuestas:

6

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):

  1. playerWorldPosition = 50, 100; objectWorldPosition = 60, 200;
  2. playerWorldPosition = 55, 110; objectWorldPosition = 60, 160;
  3. 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) + screenCentrees 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.)

Ingeniero
fuente
¿Y si hay cero o muchos objetos de jugador? ¿Qué pasa si quieres hacer efectos especiales como el movimiento de la cámara? Incluso si las matemáticas se ven iguales, en realidad no es lo mismo. Y no es uno ni el otro. Los objetos se mueven y la cámara también se mueve.
Blecki
1
@Blecki ... Dices, después de que la respuesta fue aceptada. Si realmente piensa que son tan diferentes, debe tener dificultades para configurar sus vistas. Luego, escriba su propia respuesta concisa sobre las transformaciones de vista que se ocupan de todos los casos de esquina. Nadie te detiene.
Ingeniero
Tienes una cámara, tiene una posición, creas una matriz de vista. No hay caso de esquina.
Blecki
1
@Blecki Ahora te estás contradiciendo a ti mismo. "¿Qué pasa si quieres hacer efectos especiales como el movimiento de la cámara?"
Ingeniero
1
@Blecki. Correcto. Me alegra que estemos de acuerdo.
Ingeniero