Soy nueva aquí, y empecé hará cosa de un año a programar en flash, aunque no tengo un nivel muy avanzado. Ya llevo varios meses mirando cosillas por Cristalab y me ha ayudado muchas veces, por eso, antes de nada quiero daros las gracias
Ahora os explico mi problema. Tengo que hacer un juego, el Space Invaders. Lo llevo bastante avanzado pero tengo un problema: cuando llegan los marcianos al extremo de la pantalla, tienen que ir hacia el otro lado, pero cuando rebotan en el extremo derecho, el primer marciano que ha rebotado se queda 2 píxels rezagado, y solo pasa en el extremo derecho.
Cada marciano tiene un código por separado, que es este:
onClipEvent (enterFrame) {
// moverse horizontalmente
this._x = this._x + _root.velo;
// velo es una variable declarada en el main, para que todos los marcianos puedan utilizarla. en el inicio tiene un valor = 2.
if (this.hitTest(_root.borde_izq) && this._visible == true) {
//si el marciano toca el extremo izquierdo de la pantalla, y es visible (esto es porque la nave que controlamos en el juego va disparando y los mata) cambia el signo de la variable velo y pasa a ser positiva, para que el marciano se mueva hacia el otro lado
_root.velo = 2;
}
//lo mismo para el borde derecho, velo pasará a valer -2
if (this.hitTest(_root.borde_der) && this._visible == true) {
_root.velo = -2;
}
}
El funcionamiento, en principio, es correcto ya que no me da errores de actionscript y los marcianos mueren cuando les toca el laser. Pero el primer marciano que toca el borde derecho, se retrasa 2 pixels cada vez que rebota.
Tengo otra versión que mueve todos los marcianos como un grupo, desde otro movieclip, mediante un bucle que evalúa todos los marcianos, que tienen nombres como marcia_1, marcia_2... así que con un for, lo hago. pero el marciano tambien se retrasa. Y no se que hacer.
A ver si alguien puede echarme una mano, porque estoy muy atascada aquí.
¡Gracias!