Foros del Web » Creando para Internet » Flash y Actionscript »

colisiones en flash

Estas en el tema de colisiones en flash en el foro de Flash y Actionscript en Foros del Web. veran estoy haciendo un juego en flash, es sobre naves yo les disparo a los marcianos que quieren destruir la tierra XD pues lo que ...
  #1 (permalink)  
Antiguo 25/11/2008, 18:46
Avatar de creacionespato  
Fecha de Ingreso: noviembre-2008
Mensajes: 2
Antigüedad: 15 años, 4 meses
Puntos: 0
Exclamación colisiones en flash

veran estoy haciendo un juego en flash, es sobre naves yo les disparo a los marcianos que quieren destruir la tierra XD

pues lo que quiero es que si un marciano toca la tierra esta desaparezco es explote, pero no encuentro el modo

utilizo este code en el pimer frame

Código:
//---- variables ---- 
var steps:Number = 15; 
var spriteX:Number = 460; 
var spriteY:Number = 430; 
var speed:Number = 50; 
var arrowActive:Boolean = false; 
var dragons:Number = 3; 
var i:Number = 0; 
var score:Number = 0;
//---- functions ---- 
function checkKeys() { 
if (Key.isDown(Key.RIGHT)) {

spriteX += steps;

} else if (Key.isDown(Key.LEFT)) {

spriteX -= steps;

}
if (Key.isDown(Key.DOWN)) {

spriteY += steps;

} else if (Key.isDown(Key.UP)) {

spriteY -= steps;

}

if (Key.isDown(Key.CONTROL) && arrowActive == false) { 
knight.arms.play(); 
attachMovie("arrow", "arrows", 8); 
arrows._x = spriteX; 
arrows._y = spriteY-50; 
arrowActive = true
} 
} 
function updatenave() { 
nave._x = spriteX; 
nave._y = spriteY;
} 
function updateArrow() { 
if (arrowActive == true) { 
arrows._y -= speed;
} 
if (arrows._y<-10) { 
arrowActive = false; 
removeMovieClip(arrows);
} 
} 
this.onEnterFrame = function() { 
checkKeys(); 
updatenave(); 
updateArrow();
};
function initDragons() { 
for (i; i<dragons; i++) { 
attachMovie("dragon", "dragon"+i, i); 
dragon = _root["dragon"+i]; 
updateDragons(dragon); 
dragon.onEnterFrame = function() { 
if (this.hitTest(arrows)) { 
score += 5; 
trace(score); 
arrowActive = false; 
removeMovieClip(arrows); 
updateDragons(this);
} 
if (this._x>0) { 
this._x -= this.velo;
} else { 
updateDragons(this);
} 
};
} 
} 
initDragons(); 
function updateDragons(which) { 
which.gotoAndStop(random(4)); 
which._x = random(100)+530; 
which._y = random(80)+20; 
which.velo = random(10)+2;
}
lo unico que tengo en el escenario es la nave los marcianos los llamo desde la libreria

por favor ayudenme que esto me esta matando

Pd. el titulo dragon se refiere a los marcianos y arrow a el laser de la nave jeje
  #2 (permalink)  
Antiguo 25/11/2008, 19:50
Avatar de jahepi
Colaborador
 
Fecha de Ingreso: diciembre-2004
Ubicación: Querétaro
Mensajes: 1.124
Antigüedad: 19 años, 4 meses
Puntos: 43
Respuesta: colisiones en flash

Hola creacionespato !

El método hitTest no te funciona ?, porque con eso lo podrías solucionar.
Otra forma de detectar si esta colisionando es que veas cual es la distancia del marciano y la tierra, esto lo calculas con el famosísimo Teorema de Pitágoras, vas a calcular la hipotenusa para saber la distancia entre los 2 objetos, finálmente si es menor o igual a 0 quiere decir que están chocando.

Un saludote !
__________________
Una contraseña es como la ropa interior. No deberías dejarlas afuera a la vista de otras personas, deberías cambiarla regularmente, y ni se te ocurra prestarla a extraños.
  #3 (permalink)  
Antiguo 25/11/2008, 21:42
Avatar de creacionespato  
Fecha de Ingreso: noviembre-2008
Mensajes: 2
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: colisiones en flash

gracias por contestar amig@

pues si con el hitTest fue que hice la colision entre el laser de la nave y los marcianos, pero no se como aplicarla para la tierra xq los marcianos los llamo desde la libreria, me podrias dar algun ejemplo por favor y donde debo colocarlo x favor te lo pido

y si no con el segundo método que me propones tambien podrias mostrarme mas o menos como???

en serio gracias, no sabes como me ha vuelto loco este asunto


Saludos!!!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:24.