Comunidad de diseño web y desarrollo en internet online

¿Alguna forma de hacer un HitTest general?

Citar            
MensajeEscrito el 29 Sep 2008 11:49 pm
Mi duda es simple, existe alguna forma... función... que me permita saber cuando un MC cualquiera toque a otro?
Por ejemplo.. tengo el MC caja y quiero saber cuando sea tocado por cualquiera. El Mc bola toca el MC caja y este sabe que fue bola...
Algo asi como

Código :

if(HitTestMe){
ObjectWhoHitMe.x++;
}

Por JaLeRu

Claber

1913 de clabLevel

7 tutoriales

Genero:Masculino  

Existo

firefox
Citar            
MensajeEscrito el 30 Sep 2008 06:49 am
Desgraciadamente no hay ningún método más que recorrerse un array con los objetos a comprobar el choque. Los choques los puedes comprobar con hitTest, con hitTestPoint o con un modo de comprobación basado en la distancia, por ejemplo si tenemos dos círculos, cuando la distancia entre sus centros sea menor que la suma de los radios -yo siempre compruebo el cuadrado de la distancia entre sus ceentros y el cuadrado de la suma de los radios-

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 30 Sep 2008 09:19 pm
Bueno de todos modos gracias.
La técnica del Array ya la había hecho. Pero ¿No se recargara de procesos al hacer tantos Fors para detectar hits?

Por JaLeRu

Claber

1913 de clabLevel

7 tutoriales

Genero:Masculino  

Existo

firefox
Citar            
MensajeEscrito el 01 Oct 2008 07:26 am
Pues sí, sí que se recarga.... (no de procesos, pero un bucle en un onEnterFrame ha de tener cuantas menos instrucciones mejor) Vale, hay diversas "técnicas" según los casos:
1.-El bucle for con hit test
2.-El bucle for con una fórmula de distancias
2.-meter TODOS los MCs que van a chocar con la caja DENTRO de otro MC, así sólo comprobaríamos una vez el hitTest una vez. Claro que, una vez que haya el choque, deberíamos comprobar cuál es la "bola" que ha chocado
3.-Dividir nuestro "stage" en cuadrículas y ver en qué cuadrícula está cada "bola" (dividiendo la x entre el ancho de nuestra cudrícula imaginaria y la y entre el alto de nuestra cuadrícula. Considerar que "toca" caja si está en ciertas cuadrículas o si la cuadrícula está ocupada

Según tomemos una u otra opción podremos simplificar nuestro bucle. Pero sí, un bucle en un onEnterFrame "ralentiza" (aunque menos que varios onEnterFrame) aunque gracias a AS.3 es bastante rápido -estaba buscando un ejemplo, pero no lo he encontrado-

NOTA:En cualquier caso, hagamos, si es posible, que nuestros Objetos extiendan o sean de la clase Sprite -en lugar de MovieClip-

Por Eliseo2

710 de clabLevel



 

firefox

 

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