Tutorial 10 - Creación de un juego (II)

Paso 12 de 22

Vamos a añadir el movimiento de vibración de las minas en el escenario. Creamos una nueva variable al inicio de la programación, junto con las variables course, speed y numMines, a la que llamaremos vibration. Le asignamos un valor de 5.

var vibration:Number = 5;

Vamos a programar que la posición de la mina varíe desde la posición en la que se encuentra en cada momento, a una nueva posición aleatoria que se encuentre a una distancia máxima de 5 píxeles de la posición actual, que es la cantidad que hemos asignado a la variable vibration.

Es decir, si la posición actual de una mina fuera x=200 e y=300, al instante siguiente el valor de x estaría entre 195 y 205, mientras que el valor de y podría estar entre 295 y 305. De esta forma, la mina vibrará un máximo de 5 píxeles en cada sentido (horizontal y vertical).

Como hemos aprendido anteriormente, la sentencia

Math.random() * vibration

devolverá un valor que se encuentra entre 0 y 5 (que es el valor que hemos dado a la variable vibration).

Por lo tanto, la sentencia

Math.random() * vibration - Math.random() * vibration

devolverá un número entre -5 (0-5) y 5 (5-0).

Dentro de la función enemy (que se ejecuta llamada por un ENTER_FRAME de cada mine), pero fuera del condicional que evalúa si hay choque entre la mina y la nave, escribiremos el siguiente código:

e.target.x += Math.random() * vibration - Math.random() * vibration;
e.target.y += Math.random() * vibration - Math.random() * vibration;

Para evitar que con esta vibración aleatoria la mina pueda acabar fuera del escenario, añadiremos dentro de la misma función unas sentencias condicionales que evalúen si la mina está fuera de los límites, y de estarlo, la colocaremos de nuevo en el límite del escenario.

if (e.target.x < 0) 
{
    e.target.x = 0;
}

Este condicional evitará que la mina salga por el lado izquierdo del escenario. Debemos añadir otros condicionales similares para el resto de los casos (si x > 550 entonces que x = 550, si y < 0 entonces y = 0, y si y > 400 entonces y = 400).