Comunidad de diseño web y desarrollo en internet online

Colision de un MC con varios MC generados desde un bucle "FLOR&am

Citar            
MensajeEscrito el 24 Mar 2015 11:42 pm
Hola!, bueno mi problema es el siguiente e buscado en internet pero nada puso satisfacer mi necesidad..

dado un MC necesito saber cuando dicho MC colisiona con otros MC generados desde un bucle.

Aca les dejo el codigo en AS3 :

Código ActionScript :

import flash.display.MovieClip;
import flash.events.MouseEvent;

for(var i:Number = 1;i<=4;i++){
   var obj:MovieClip = new cuadrado();
   obj.x = (obj.width+10)*i;
   addChild(obj);
}

var pelota:MovieClip = new bola();
addChild(pelota);
pelota.addEventListener(MouseEvent.MOUSE_DOWN, function(){
   pelota.startDrag();
});
stage.addEventListener(MouseEvent.MOUSE_UP,function(){
   stopDrag();
});


Lo que necesito es saber cuando "PELOTA" colisiona con alguno de los "OBJ" generados en el bucle.

E mirado este tutorial : http://www.flashperfection.com/tutorials/HitTest-AS3-for-collision-detection-Flash-Actionscript-3-75494.html

pero solo logro detectar la colision con el ultimo "OBJ" generado en el bucle y no.. con cada "OBJ" de todos los generados..

Desde ya muchas gracias por su ayuda.

Por sodyack

40 de clabLevel



 

Ninguno

chrome
Citar            
MensajeEscrito el 25 Mar 2015 12:47 pm
La idea es la siguiente: cada instancia de cuadrado generada la metes en un array. En el mouseMove una vez que empezó el drag, recorres el array buscando colisiones uno por uno. Otra opción mas performante dado que lo ubicas uno al lado del otro (y suponiendo que no se mevan) es calcular el reactángulo que contiene a todos y ver la colisión contra eso.

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 25 Mar 2015 05:23 pm
Gracias por la idea del array solisarg no sabia que podia guardar los objetos.. pense que solo eran para guardar INT,NUMBER,STRING etc etc..

He podido hacer lo que queria, dejo el codigo final por si algun otro usuario de cristalab se traba con el mismo problema.

Código ActionScript :

import flash.display.MovieClip;
import flash.events.MouseEvent;

var objs:Array = new Array();
for(var i:Number = 1;i<=4;i++){
   var obj:MovieClip = new cuadrado();
   objs[objs.length] = obj;
   obj.x = (obj.width+10)*i;
   addChild(obj);
}

var pelota:MovieClip = new bola();
addChild(pelota);
pelota.addEventListener(MouseEvent.MOUSE_DOWN, function(){
   pelota.startDrag();
});
stage.addEventListener(MouseEvent.MOUSE_UP,function(){
   stopDrag();
   for(var i:Number = 0;i<objs.length;i++){
      if(objs[i].hitTestObject(pelota)){
         trace("toca");
      }
   }
});

Por sodyack

40 de clabLevel



 

Ninguno

chrome

 

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