Comunidad de diseño web y desarrollo en internet online

Detección de colisiones y movimiento en ActionScript

El juego consiste en que con las flechas del teclado uno debe evitar que le haga contacto con el misil, si hay contacto ocurre una explosión. Solo falta que al juego se le agregue que el mismo helicóptero pueda arrojar torpedos para sortear mejor los misiles enemigos

NOTA: lo que aparece en // son líneas de documentación:

fscommand("fullscreen", true);
fscommand("allowscale", true);
fscommand("showmenu", true);
//con las líneas anteriores se maximizan la ventana de juego y se quita el menú
set(helix, helicoptero._x);
set(heliy, helicoptero._y);
set(rockety, rocket._y);
set(valor, random(6));
set(rocketx, rocket._x);
setProperty(explocion, _visible, false);
setProperty(explocion, _x, helix);
setProperty(explocion, _y, heliy);
//1 volver transparente helicoptero y rotando con las flechas 2 colocar fondo primera
//capa y ultima
//el helicoptero se vuelve visible

_root.helicoptero.play();
_root.helicoptero._visible = true;
//estos condicionales evalúan lo que se ha tecleado y seguidamente se incrementa una
//variable asociada a cada tecla de las flechas, estas variables a su vez se adjudican a las
//posiciones del helicoptero

if (Key.isDown(Key.RIGHT)) {
helix = helix+5;
}
if (Key.isDown(Key.LEFT)) {
helix = helix-5;
}
if (Key.isDown(Key.UP)) {
heliy = heliy-5;
}
if (Key.isDown(Key.DOWN)) {
if (heliy<=280) {
heliy = heliy+5;
} else {
heliy = 5;
}
}
helicoptero._y = heliy;
helicoptero._x = helix;
//esta es la parte mas importante del juego
//la función hitTest evalua si dos objetos estan en contacto
// lo que se hace es asignar a una variable un valor true o false dependiendo
// de si los dos objetos están en contacto, para el caso helicóptero y rocket

status = _root.helicoptero.hitTest(_root.rocket);
//helicoptero.play();
// SI NO HAY IMPACTO Y SI ROCKET SALIO DE LA PANTALLA, EMPIECE //ROCKET

if ((status == false) and (rocket._y<=0)) {
rocket._y = 380;
rocketx = random(500);
}
// SI NO HAY IMPACTO Y SI ROCKET_.Y ES MAYOR O IGUAL (SI ESTA MAS ABAJO) A HELICOPETO._y ENTONCES
if (status == false) {
setProperty(helicoptero, _visible, true);
helicoptero.play();
rocket._y = rocket._y-5;
//vida=vida+1;
}
rocket._y = rockety;
rocket._x = rocketx;
//OCURRIO U IMPACTO Y SE DUPLICARA UN ROCKET
if (status == true) {
/// a ocurrido explociòn
stopAllSounds();
_root.helicoptero.stop();
_root.helicoptero._visible = false;
var i;
for (i=0; i<=valor; i++) {
_root.attachMovie("rocket", "rocket"+i, i);
}
duplicateMovieClip("explocion", "ex1", 0);
setProperty(ex1, _visible, true);
setProperty(ex1, _x, helix);
setProperty(ex1, _y, heliy);
ex1._y = heliy-20;
ex1._x = helix+20;
ex1.play();
rocket._y = 380;
rocketx = random(500);
//en las líneas anteriores lo que se hace es darle vida al símbolo explocion y este es
//visible si estatus es igual a true, es decir si hay impacto entre los dos objetos
//las coordenadas donde aparece la explosión pueden ser las del mismo helicóptero o mejor
//dicho de las variables asignadas a tal objeto
//la función random ubica la aparición del misil en una coordenada x aleatoria del monitor.

}
gotoAndPlay(1);
//regresando al fotograma 1, se vuelve a testear todo el programa
//este codigoe sta insertado en el segundo programa
//gotoAndPlay (1);

Carlos Casadiego
Ing Electrónico
Bogota - Colombia
carloscasadiego@yahoo.es
www.geocities.com/procesamiento/ejemplo1.html - Pagina personal de poesías

¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.

Descargar Archivo

Publica tu comentario

El autor de este artículo ha cerrado los comentarios. Si tienes preguntas o comentarios, puedes hacerlos en el foro

Entra al foro y participa en la discusión

o puedes...

¿Estás registrado en Cristalab y quieres
publicar tu URL y avatar?

¿No estás registrado aún pero quieres hacerlo antes de publicar tu comentario?

Registrate