Ángel Serrano
Madrid
Ingeniero Informático por la Universidad Complutense de Madrid.
Actualmente, estudiando el Máster de Investigación Informática de la UCM, y trabajando en la versión 2.0 del proyecto eAdventure.
Añade control de velocidad y frenado a los movimientos del pong.
Esta entrada pertenece a ActionScript 3 – Guía para Principiantes.

Vamos a realizar un control de velocidad basado en términos de aceleración. Es decir, cada vez que pulsemos una tecla, vamos a propulsar nuestro pong, sumándole una aceleración la velocidad que ya tuviere. Además, para que la cosa no se vaya de madre y el pong se vuelva medio loco, vamos a simular fricción con el aire, que frenará nuestro pong. Nuestras variables para el control de velocidad serán:
// Control de velocidad private var vy:Number = 0; // Velocidad actual private var acc:Number = 1; // Aceleración private var friccion:Number = 0.95; // Fricción con el aire
Inicializar los atributos en su declaración surge el mismo efecto que si los iniciaramos en el constructor de clase.
Para hacer uso de estas nuevos atributos, modificamos la función mover:
public function mover(e:Event)
{
if (key.isDown(upKey))
{
vy -= acc;
}
else if (key.isDown(downKey))
{
vy += acc;
}
y += vy;
vy *= friccion;
}
Si probamos la película, veremos que nuestros pongs ahora se desplazan de manera más suave y realista.
Aún así, seguimos teniendo un problema importante: Cuándo el pong llega a alguno de los límites de película, desaparece. Podemos controlar esto de manera sencilla, añadiendo el siguiente bloque al final de la función mover:
if (y < 0)
{
y = 0;
vy = -vy;
}
else if (y > stageRef.stageHeight)
{
y = stageRef.stageHeight;
vy = -vy;
}
Con este trozo de código, controlamos que la posición “y” de nuestro pong (su punto central) no salga de los límites de la película (Recuerda que stageRef era una referencia al escenario principal de la película). Si el pong intenta salir de los límites, restablecemos su posición al límite más cercano y revertimos la dirección de su velocidad, consiguiendo un efecto de rebote bastante resultón.
| Anterior | Índice | Siguiente |
[...] Siguiente [...]
[...] Anterior [...]