Colisiones entre infinitos MovieClip para Juego de Disparos – Juegos Flash ActionScript

Posted on enero 12, 2007. Filed under: Array, Clases, Colisiones, Condicionales, Ejemplos Mios, Eventos, Flash, Funciones, Guias, Loop, Movie Clips, Movimiento, Objetos |

Bueno, ya conseguí hace mi primer juego de disparos aca esta el link

Aca el los archivos fuente. Aunque hay que actualizarlos con este codigo

El problema de hacer un juegos con infinitos disparos y enemigos, es como asignar los nombres para efectuar las colaciones. No sabia como hacerlo al comienzo, pero pregunte en cristalab me ayudaron y lo termine. Aca el post

El código es este
Película principal

Código Película principal :
////////// Inicio Muros
// Crea la Array que va a guardar los nombres de todas las rocas que caen
var MiArray:Array = new Array();
// Variable que nos sirve de contador para que cada nuevo clip tenga nombre nuevo
var contaMuros:Number = 0;
// Funcion que hace que apareca un nuevo Muro en la pelicula
function crearMuros() {
   // Cada vez que se ejecuta la funcion crearMuros se aumenta en 1 el contador
   contaMuros++;
   // Agrega en la ultima posicion de la array un attachMovie y queda como valor el nombre de el mouro.
   // El movieClip id_muro sirve de padre de todas las rocas. Hereda las propiedades de la Clase Muro.as
   _root.MiArray.push(_root.attachMovie("id_muro", "muro"+contaMuros, getNextHighestDepth()));
}
// Intervalo que hace que se ejecute la funcion crearMuros
var miInterval:Number = setInterval(crearMuros, 500);
////////// Fin Muros

////////// Inicio Laser
// Variable que nos sirve de contador para que cada nuevo clip tenga nombre nuevo
var contaLaser:Number = 0;
this.boton.onPress = function() {
   // Cada vez que se pulsa el boton se aumenta en 1 contaLaser
   contaLaser++;
   // Agrega un laser en la pelicula. Este larser hereda todas las propiedades de la Clase Laser.as
   _root.attachMovie("id_laser", "laser"+contaLaser, getNextHighestDepth());
};
////////// Fin Laser

////////// Inicio Explosion y Puntaje
// Funcion que hace que aparesca la explosion. Se activa cuando hay una colisión.
// Cada vez que explota  cambia el puntaje
_global.contaExplosion = 0;
function Explosion() {
   // Variable que nos sirve de contador para que cada nuevo clip tenga nombre nuevo
   contaExplosion++;
   _root.attachMovie("id_explosion", "explosion"+contaExplosion, getNextHighestDepth(), {_y:115, _x:350});
   // Hay un texto dinamico con variable llamada Puntaje.
   Puntaje = "Puntos: "+(contaExplosion*20);
}
////////// Fin Explosion y Puntaje

////////// Inicio Cronometro
// Esto hace que el juego dure 15 segundos.
var Cronometro:Number = 15;
// Funcion que se repetira cada 1000 milisegundos osea 1 segundo
function cuentaAtras() {
//   Cada vez que se ejectua esta funcion se le resta 1 a el Cronometro
   Cronometro--;
   // cuando la variable cronometro llega a 0 para los muros y va al frame 3
   if (Cronometro<0) {
      _root.gotoAndStop(3);
      clearInterval(miInterval);
   }
   // Esto hace que aparesca el tiempo en un texto dinamico
   tiempo = "Tiempo: "+Cronometro;
}
var Reloj:Number = setInterval(cuentaAtras, 1000);
////////// Fin Cronometro

Código Clase laser Laser.as  :

// Importa la clase Tween que nos va a servir para darle movimiento  a la bala
import mx.transitions.Tween;
// La Clase Laser hereda las propiedades del objeto MovieClip, para que pueda hacer todas las cosas que
// hace un MovieClip y no de error. Esta Clase la hereda el MovieClip id_laser en la película principal desde la biblioteca
class Laser extends MovieClip {
    // Funcion Constructora. Se ejecuta cuando el MovieClip que hereda esta clase se crea con un attachMovie
   function Laser() {
      // Posicion vertical
      this._y = 115;
      // Este codigo hace que el disparo se mueva.
      var miDisparo:Tween = new Tween(this, "_x", mx.transitions.easing.None.easeNone, 70, 500, 15, false);
      // variable que ayuda a que no se pierda la referencia de this en las siguientes funciones.
       var scope = this;
      // un evento de la clase Tween que ejecuta un codigo cuando el movimiento termina el recorrido.
      // Parecido a enterFrame
      miDisparo.onMotionFinished = function():Void  {
         // Cuando termina el recorrido el Movieclip, este es eliminado
         scope.removeMovieClip();
      };
      // un evento de la clase Tween que ejecuta un codigo cuando el movimiento se esta produciendo. Parecido a enterFrame
      miDisparo.onMotionChanged = function():Void  {
         // Este pedazo es la razon de este post y la parte mas dificil. Asi que veneradlo. Si lees el post entenderas este pedazo
         // Cada vez que nace un muro, este deja el registro de su nombre en la array MiArray.
         // Y cada vez que un muro es eliminado o termina su recorrido, su nombre tambien es eliminado de la array.
         // Cada vez que nace un laser, este revisa todos los muros que hay en la pelicula,
         // revisando todos los datos que hay en la array MiArray.
         for (var i:Number = 0; i<_root.MiArray.length; i++) {
            if (scope.hitTest(_root.MiArray[i])) {
               // Si choca contra algun movieClip que tenga el nombre archivado en la Array MiArray
               // de la pelicula principal, el movieClip que herede esta clase se elimina
               scope.removeMovieClip();
               // elimina tambien la roca con la que choco
               _root.MiArray[i].removeMovieClip();
               // ejecuta la funcion Explosion de la pelicula principal. Esta funcion hace que salga la explosion
               _root.Explosion();
            }
         }
      };
   }
}

Código Clase Muro Muro.as:

// Lo mismo que la Clase Laser :)
import mx.transitions.Tween;
class Muro extends MovieClip {
   public function Muro() {
      this._x = 342;
      var miDisparo:Tween = new Tween(this, "_y", mx.transitions.easing.None.easeNone, -35, 200, 25, false);
      var scope = this;
      miDisparo.onMotionFinished = function() {
         scope.removeMovieClip();
// Cuando una roca termina su recorrido, elimina el primer elemento de la array, Osea, el nombre del MovieClip que heredo esta clase
         _root.MiArray.shift();
      };
   }
}

Make a Comment

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

17 comentarios to “Colisiones entre infinitos MovieClip para Juego de Disparos – Juegos Flash ActionScript”

RSS Feed for Aprendiendo a Programar en Python con PyGame para hacer Video Juegos Comments RSS Feed

hola me llamo dennis y me gustaria saber si se
puede hacer algo parecido al tuyo ,tu juego
esta bacan,pero en ves de darle click al boton
se puede hacer con la letra A, B ,osea si
en ves de hacer click al boton, a presionar
la letra A se ejecute el boton, bueno si
sabes como hacerlo me mandas un mensaje a mi
correo es Dejaan_kanon@yahoo.es

eyy! amigo muy bueno!! yo tambien estaba
tratando de empezar a programar algo en flash!
voy a usar tu juego para guiarme en algunas
cosas😉 mucha suerte! y segui asi!

quisiera saber si este codigo que pusiste ahi, el codigo de la pelicula principal, lo pusiste en algun fotograma o lo agregaste a las acciones de un frame o que?, por que no me quedo claro, gracias ^^

Pues mira, que arriba se puede descargar el juego, ademas en el codigo, se explica bien, donde debe ir cada codigo. Bajate el codigo fuente del juego, y veras.

Te Felicito …. Tratare de hacer un juego .
Gracias por el Tutorial

en donde coloco el codigo por favor. soy primiparo en esto

por favor eniame la respuesta al correp jap_248@hotmail.com
te lo agradeceria enormemente

Hola Jorge. Veo que te falta mucho por aprender a postear en un blog o foro, en fin. Por lo que veo, no sabes casi nada de flash. Si no sabes donde colocar el código, te recomiendo que bajes los videotutoriales de http://www.illasaron.com. Ademas, no viste que hay arriba estan los archivos para descargar?… Saludos

hola me llamo guilleromo y me pregunto si
podria hacer un juego de disparos que se mueva
la pistola y armas con el mais y darle un clic para disparar gracias les dejo mi msn para que me
manden un correo william_-13@hotmail.com

hola me llamo guilleromo y me pregunto si
podria hacer un juego de disparos que se mueva
la pistola y armas con el mais y darle un clic para disparar gracias les dejo mi msn para que me
manden un correo william_-13@hotmail.com perdon🙂

Si puedes.

Hola, me llamo ruben, los links para bajar los archivos estan muertos.
Me preguntaba si podrias poner unos nuevos..😛

ALGUIEN ME PODRIA DECIR O DAR ALGUN JUEGO PARECIDO AL COUNTER STRIKE O EL MISMO PORFA CONTACTAR RODRIGOMV-K@HOTMAIL.COM

Huy Loco, Super bien…
me he dedicado ha crear pequeños juegos parecidos a el tuyo, me ha servido de mucho todo esto, muchas gragra
gracias, por todo esto, de verdad con esto se puede hacer de todo.. es genial… muy pronto estare montando mis propios tutoriales y juegos de muestra en mi pagina nueva.

Hola Saludos a todos los que desean aprender a crear juegos en Macromedia flash, soy estudiante de Ing de Sistemas VIII y aqui les dejo mi Mail, para que compartan sus inquietudes ideas, dudas y recursos que tengan… me estoy dedicando a crear un proyecto donde quisiera que participen todos ustedes… Novatos, Fanaticos, Expertos, Masters… no importa, solo vale que quieras saber algo o aportar ideas de juegos en flash… las estaremos compartiendo por ahora en una web plantilla de paginawebgratis… Entonces aquiles dejo mis contactos por si quieren consultar o discutir o aportar algo sobre creacion de juegos en flash, muy pronto estare creando otro espacio menos personal en el que solo nos dedicaremos a estos temas por ahora.. visiten mi pagina web personal:
fabianvargas.es.tl escriban en la parte de foros u opiniones.. o escribanme a mi correo institucional: fvargas@cuc.edu.co

Gracias por el por la explicacion, este es el unico lugar donde pude encontrar la solucion a este problema.

que es eso…dime qomo lo hiciste pero ya!!! lo necesito y a lo qe pusiste no le entiiendo!!!


Where's The Comment Form?

Liked it here?
Why not try sites on the blogroll...

A %d blogueros les gusta esto: