Matemáticas y física

La geometría, los vectores, la aceleración... todas esas cosas pueden usarse dentro de un videojuego. ¿O acaso creías que no servía para nada? En este vídeo te refresco la memoria.

Este curso ha sido marcado como anticuado y no está siendo revisado de forma activa. Es posible que la información pueda estar desactualizada o que los enlaces se hayan roto.

Cuando nos adentramos en el desarrollo de videojuegos, es fundamental comprender algunos conceptos básicos de matemáticas y física que nos permitirán manejar correctamente la posición y el movimiento de los objetos en pantalla. Empecemos por lo más sencillo: el punto.

Un punto en el contexto de un videojuego es simplemente un par de números, una coordenada X y una coordenada Y, que indican una posición en la pantalla. Por ejemplo, si colocamos una imagen en la posición (300, 200), estamos diciendo que su origen se sitúa a 300 píxeles desde la izquierda y 200 píxeles desde la parte superior. Es importante recordar que, a diferencia de la representación matemática tradicional donde el origen está abajo a la izquierda, en los ordenadores el origen de coordenadas está en la esquina superior izquierda. Esto significa que el eje Y crece hacia abajo.

Ahora bien, para entender cómo se mueve un objeto, necesitamos hablar de desplazamiento y vectores. Supongamos que tenemos un enemigo que se mueve en la pantalla. Si en un instante está en la posición (400, 100) y en otro instante está en (200, 100), el desplazamiento es la diferencia entre estas dos posiciones. Matemáticamente, podemos representarlo como un vector que apunta desde la posición inicial hasta la posición final. En este caso, el vector de desplazamiento sería (-200, 0), porque el objeto se ha movido 200 píxeles hacia la izquierda y no ha cambiado su posición vertical.

Este vector nos indica no solo cuánto se ha movido el objeto, sino también en qué dirección. Es un concepto clave para calcular movimientos en el juego.

Para medir cómo de rápido se mueve un objeto, introducimos el concepto de velocidad. La velocidad es la distancia recorrida dividida entre el tiempo que se tarda en recorrer esa distancia. Por ejemplo, si un objeto recorre 300 píxeles en 3 segundos, su velocidad es de 100 píxeles por segundo. Si recorre la misma distancia en menos tiempo, la velocidad es mayor, y si tarda más tiempo, la velocidad es menor.

La fórmula básica que usamos es:

velocidad = distancia / tiempo

De esta fórmula podemos despejar otras variables según lo que necesitemos calcular. Por ejemplo, si queremos saber cuánto tiempo tardará un objeto en recorrer una distancia dada a una velocidad conocida, usamos:

tiempo = distancia / velocidad

Y si queremos saber la posición final de un objeto después de moverse a cierta velocidad durante un tiempo determinado, usamos:

posición = velocidad × tiempo

En el contexto de los videojuegos, solemos medir la distancia en píxeles y el tiempo en segundos, por lo que la velocidad se expresa en píxeles por segundo.

Veamos un ejemplo práctico. Supongamos que un enemigo se mueve hacia la izquierda a una velocidad de -60 píxeles por segundo (el signo negativo indica que se mueve hacia la izquierda, es decir, hacia valores menores en el eje X). Si queremos saber cuánto se ha desplazado después de 2 segundos, aplicamos la fórmula:

desplazamiento = velocidad × tiempo = -60 × 2 = -120 píxeles

Esto significa que el enemigo se ha movido 120 píxeles hacia la izquierda.

Pero, ¿cómo actualizamos la posición del enemigo en el juego? Si inicialmente estaba en la posición X = 400, su nueva posición será:

posición final = posición inicial + desplazamiento = 400 + (-120) = 280

Por lo tanto, después de 2 segundos, el enemigo estará en la posición X = 280.

Podemos expresar esta relación de forma general con la ecuación del movimiento:

posición final = posición inicial + velocidad × tiempo

Esta fórmula es fundamental para actualizar la posición de cualquier objeto en nuestro juego de forma continua y fluida.

Para ilustrar cómo se puede implementar esto en código, imaginemos que tenemos una variable posX que representa la posición horizontal de un enemigo, una variable velocidadX que representa su velocidad en píxeles por segundo, y una variable deltaTime que representa el tiempo transcurrido desde la última actualización (en segundos). La actualización de la posición se haría así:

posX = posX + velocidadX * deltaTime;

De esta manera, en cada frame o ciclo de actualización del juego, calculamos la nueva posición del enemigo basándonos en su velocidad y el tiempo transcurrido, lo que nos permite simular un movimiento realista.

En resumen, entender cómo funcionan los puntos, los vectores de desplazamiento, la velocidad y la ecuación del movimiento nos da las herramientas necesarias para controlar el movimiento de los objetos en un videojuego. Esto nos permitirá pasar de movimientos simples basados en pulsaciones de teclas a movimientos más naturales y continuos basados en velocidades y tiempos, lo que enriquecerá la experiencia de juego y facilitará la programación de comportamientos complejos.

Lista de reproducción
  1. 1
    Instalando las herramientas Java
    11 minutos
  2. 2
    Instalando Slick2D
    26 minutos
  3. 3
    Estados e imágenes
    23 minutos
  4. 4
    Respuesta de usuario
    24 minutos
  5. 5
    Colisiones
    25 minutos
  6. 6
    Matemáticas y física
    13 minutos
  7. 7
    SpriteSheet
    13 minutos
  8. 8
    Tilemaps básicos
    23 minutos
  9. 9
    Escalas
    11 minutos
  10. 10
    Animaciones (parte 1)
    14 minutos
  11. 11
    Animaciones (parte 2)
    15 minutos
  12. 12
    Radiografía de un estado
    12 minutos
  13. 13
    Mover con el ratón (parte 1)
    11 minutos
  14. 14
    Mover con el ratón (parte 2)
    13 minutos
  15. 15
    Sonido
    13 minutos
  16. 16
    Música
    14 minutos
  17. 17
    Fuentes
    19 minutos
  18. 18
    Instalar Slick en NetBeans
    6 minutos