Asteroids: nave con giros controlados

Para hacer giros controlados, y no volver locos al piloto, vamos a meter un contador o retardo. Esta misma técnica la usaremos más adelante en otras funciones que sea necesario ralentizar, como los disparos o las explosiones, que también son animaciones.

Otro candidato a ralentizar sería la aceleración de la nave, pero, como en este caso sólo admitimos velocidades de 0 a 3, tampoco hay mucho margen para que se aprecie. Si las velocidades permitidas tuvieran más amplitud, por ejemplo, de 0 a 10, sí tendría sentido ralentizar para no salir disparados en un instante.

Pero entiéndase bien. No se trata detectar que el jugador pide giro y, para evitar que vaya muy rápido, poner el juego a esperar en un bucle. Esto ralentizaría todo el juego, no sólo los giros o los disparos.

Se trata, más bien, de asociar un contador a los giros. De este modo, cada vez que el jugador pida giro, en vez de girar inmediatamente, se decrementa el contador y se continúa con el bucle del juego. Y cuando el contador finalmente llega a cero, se gira y se vuelve a poner el contador a su valor inicial.

De este modo, el hecho de que el contador de giro se decremente de N a N-1, no interfiere con el resto de actualizaciones del bucle de juego. Los disparos y los asteroides pueden seguir actualizándose a su ritmo.

Por tanto, si en vez de girar en cada ciclo del bucle de juego, giramos sólo 1 vez de cada N, el efecto resultante es que el giro no es tan sensible, y se gana control sobre la nave.

El código es sencillo. Lo primero es observar que aparece una nueva variable “jugadorRetardoAngulo”:

Asteroids - Retardo angulo

Y lo siguiente es observar que ahora, al girar a izquierda o derecha, en vez de decrementar/incrementar el ángulo de forma directa, primero se decrementa el retardo/contador y, sólo cuando éste llega a cero, se actúa sobre el ángulo y se vuelve a poner el contador a su valor inicial (5 en este caso):

Asteroids - Retardo angulo 2

Ahora los giros son mucho más suaves. Así da gusto matar asteroides 🙂 .

Asteroids - Giros controlados

En el proyecto Asteroides03 pueden verse los cambios.


Código del proyecto: Asteroids03

Deja una respuesta

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s