Comunidad de diseño web y desarrollo en internet online

soy nueva, S.O.S :-)

Citar            
MensajeEscrito el 01 Ene 2008 09:35 pm
Hola a todos!!

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!

Por tina89bcn

10 de clabLevel



Genero:Femenino  

msie
Citar            
MensajeEscrito el 01 Ene 2008 10:04 pm
A que te refieres con que se retrasa??, desplazar arriba/abajo? desplazar iz/dr? , 2 pixel.
Si es un desplazamiento hacia arriba, seguramente en tu algoritmo de desplazamiento hacia abajo tengas vinculado velocidad con ._y y al ponerle un valor negativo a velocidad sube. Busca en tu codigo algo relacionado con this._y = this._y + _root.velo;

Un saludo

Por Andurino

25 de clabLevel



 

firefox
Citar            
MensajeEscrito el 02 Ene 2008 12:29 am
Lo sé, lo sé, es bastante difícil de entender, jeje. ¿Has jugado alguna vez al space invaders? seguro que sí, ¿sabes cuando los marcianos se dirigen en tropel hacia la parte derecha de la pantalla? cuando llegan, rebotan y vuelven todos hacia la izquierda, además de bajar un poquito. Yo tengo estos marcianos:

:D __ :D __ :D __ :D __ :D -----> van todos para aquí

cuando llegan a la parte derecha de la pantalla y rebotan, todos se desplazan bien menos el de más a la derecha que se queda separado de los demás 2 pixels:

van para aquí <------:D __ :D __ :D __ :D __________ :D <-- este se queda más separado de los demás cada
vez que rebota en la pared derecha

Me parece curioso que sea ese el que se quede atrasado ya que es el único que rebota, y en función de si toca o no con el extremo derecho, los demás cambian de dirección. Lo hacen todos bien menos ese.

No se si mi explicación se entenderá un poco mas, me gustaría poder subir el fichero swf para que vieras el fallo, pero no se si se puede hacer

Por tina89bcn

10 de clabLevel



Genero:Femenino  

msie
Citar            
MensajeEscrito el 02 Ene 2008 01:05 pm
Sin la parte codigo donde tienes codificado los movientos es complicado verlo, pero a mi me da sensacion como te indique en el post anterior que el error debe de estar en la codificacion de colision DR.



Un saludo

Por Andurino

25 de clabLevel



 

firefox
Citar            
MensajeEscrito el 03 Ene 2008 02:07 am
Hola, mira yo te puedo decir por que el primero se está retrasando :p, más no te puedo dar una solución bajo el código que tienes.

Usas hitTest. para que hitTest Funcione el objeto debe estar sobre el otro, por lo tanto según tu código primero corres al mono, luego verificas que está sobre el objeto, así que cambias la dirección, los demás si cambian de dirección, pero el primero que tocó ya hizo su corrimiento positivo y el negativo lo ignorará por que ya lo pasó.

Así pues un parche para corregir tu error será agregarle o quitarle manualmente 4 o 2 no estoy seguro, tampoco soy un compilador jajajaja. Pero te recomiendo mejor usar la propiedad de _x para saber si golpeas con tu borde izquierdo o derecho... en vez del hitTest :D... saludos, espero que te funcione, sino, no dudes en enviarme un correo :) con gusto te ayudaré.

Por El_Beto_TM

156 de clabLevel

1 tutorial

Genero:Masculino  

Mexicali, Baja California

firefox
Citar            
MensajeEscrito el 03 Ene 2008 02:43 am
a sí casí olvido decirte donde

Código :


//lo mismo para el borde derecho, velo pasará a valer -2

if (this.hitTest(_root.borde_der) && this._visible == true) {

_root.velo = -2;
//AQUI
this._x-=4; // o 2 :P... ahí le checas XD...
}

Por El_Beto_TM

156 de clabLevel

1 tutorial

Genero:Masculino  

Mexicali, Baja California

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.