Comunidad de diseño web y desarrollo en internet online

detectar colision de un vector con movieclip pero sin loop

Citar            
MensajeEscrito el 09 Ago 2010 02:03 am
Hola gente de cristalab espero que esten bien:

Necesito detectar si un vector, osea una linea entre punto A y punto B colisiona con un movieclip que es un cuadrado o rectangulo y sin usar un loop. Tendria que ser por medio de alguna formula matematica, soy muy malo con la matematica.
Lo que tengo a favor de una posible solucion matematica sin loop es que el movieclip con el que quiero detectar la colision es un cuadrado o rectangulo, no tengo que detectar la colision teniendo en cuenta la forma del dibujo.

Actualmente esto lo tengo resuelto con un loop y calculando con trigonometria si cada pedacito del vector colisiona con mi movieclip, lo cual es muy pesado para el procesador cuando tengo vectores bastante largos y tengo que calcular si el vector colisiona con 10 a 20 movieclips no solo con 1, sumado a que algunas veces tengo que hacer dicho calculo mas de una vez por fotograma, ya que es un juego de disparos multijugador y los disparos de todos los jugadores se calculan en uno solo de los jugadores, por lo que no tiene que ser pesado para nada este calculo.

Espero que me puedan ayudar, gracias de antemano. :)

Por fermmm

Claber

122 de clabLevel



 

firefox
Citar            
MensajeEscrito el 09 Ago 2010 02:52 am
El problema no es usar el loop, es como lo estas usando. Por que creo no hay forma de no usar un loop si son muchos objetos y más aun si son un numero indeterminado. Trata de hacer el código que detecta las colisiones lo más simple posible. Además intenta hacer una especie de "filtro" cosa que el loop no trabaje con objetos innecesarios. Por ejemplo, si para saber que esta colisionando necesitas verificar 6 cosas, haz que si falla una condición esencial inmediatamente ese objeto deje de ser verificado y salte al siguiente, de esa manera no gasta recursos extras.
(Por ejemplo: para que el objeto colisione tiene que cumplir con que X e Y sean verdaderos y que A o B sean falsos, entonces si X o Y son falsos salte inmediatamente al siguiente objeto sin necesidad de verificar que A o B sean falsos, por que ya sabemos entonces que no se cumplió la condición.) Y así, solo trata que sea lo más eficiente el método que uses para detectar las colisiones.


También existe otro método, en el que todos los objetos que pueden colisionar sean parte de un movieclip X, y luego el objeto que detecta las colisiones vea si éste (por medio de un método de colisión perfecta) colisiona con el Movieclip X.

Por JaLeRu

Claber

1913 de clabLevel

7 tutoriales

Genero:Masculino  

Existo

firefox
Citar            
MensajeEscrito el 09 Ago 2010 03:15 am
racias por la respuesta jaleru, lo que vos decis de hacer un loop y economizar al maximo la colision es muy importante pero ya lo tengo hecho y si el vector es muy largo realmente no se si es suficiente, tendria que hacer mediciones de tiempo, que no las hice jeje, el loop que quiero evitar no es el de los multiples objetos, si no el loop que verifica cada sector del vector para ver si ese punto colisiona con el cuadrado, reemplazarlo por una formula trigonometrica (que no debe ser simple si es que se puede) que detecta si un vector colisiona con un cuadrado. Despues de eso si hago un loop para los multiples objetos.

Por fermmm

Claber

122 de clabLevel



 

firefox
Citar            
MensajeEscrito el 12 Ago 2010 11:08 pm

fermmm escribió:

.... el loop que quiero evitar no es el de los multiples objetos, si no el loop que verifica cada sector del vector para ver si ese punto colisiona con el cuadrado, reemplazarlo por una formula trigonometrica (que no debe ser simple si es que se puede) que detecta si un vector colisiona con un cuadrado. Despues de eso si hago un loop para los multiples objetos.


Ocupa hitTestPoint! pero dale al 2º parámetro el valor true.

Por JaLeRu

Claber

1913 de clabLevel

7 tutoriales

Genero:Masculino  

Existo

firefox

 

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