Asteroids. Rotación y traslación de nave
Estoy intentando hacer un movimiento de un MovieClip (nave_mc). Quiero que avance en la dirección en que esté girada (rotada).
Alguién me puede ayudar?
var velocidad:Number;
var velocidadRotacion:int;
stage.addEventListener(KeyboardEvent.KEY_DOWN, control);
stage.addEventListener(KeyboardEvent.KEY_UP, para);
function control(e:KeyboardEvent):void {
if (e.keyCode==Keyboard.RIGHT) {
velocidadRotacion=2;
addEventListener(Event.ENTER_FRAME, rota);
}
if (e.keyCode==Keyboard.LEFT) {
velocidadRotacion=-2;
addEventListener(Event.ENTER_FRAME, rota);
}
if (e.keyCode==Keyboard.UP) {
velocidad+=2;
addEventListener(Event.ENTER_FRAME, avanza);
}
}
function avanza (e:KeyboardEvent):void {
/*********** ESTO NO SE HACERLO**********/
}
function rota(e:Event):void {
nave_mc.rotation+=velocidadRotacion;
}
function para(e:KeyboardEvent):void {
removeEventListener(Event.ENTER_FRAME, rota);
}
Se que es con el Math.sin() y que hay que convertir los radianes, pero no consigo sacarlo.
Ayudame Obi Wan, eres mi única esperanza.
lacriatura
Buen link, Slammer.
Este también es interesante: www.8bitrocket.com
slammer
Aqui tienes una paginilla que te puede interesar:
http://asgamer.com/
lacriatura
Muchas gracias Edokoa.
concrétamente este código (para quien lo necesite):
var radianes:Number = nave_mc.rotation * Math.PI / 180;
nave_mc.x += velocidad * Math.cos(radianes);
nave_mc.y += velocidad * Math.sin(radianes);
edokoa
Tienes que convertir el angulo de rotación de la nave a radianes y despues multiplicar la velocidad de la nave por el SIN y por el COS de ese angulo para cada uno de los ejes.