Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: SrTrp en 11 Julio 2017, 04:15 am



Título: Colisión entre objetos JS
Publicado por: SrTrp en 11 Julio 2017, 04:15 am
Tengo una pregunta como evitar que se encimen objetos en JS, bueno tengo un generador que cada cierto tiempo regenera un recuadro aleatoria mente con la función random pero quisiera evitar que se encimen porque a veces se pone uno sobre otro.


Título: Re: Como evito que se encimen objetos en JS
Publicado por: engel lex en 11 Julio 2017, 04:33 am
esto se llama "colision de elementos", usado sobre todo en juegos

puedes hacerlo con el bounding rect de el elemento (el rectangulo) un ejemplo

Código
  1.  
  2. function detectar_colision(el1, el2) {
  3.    return !(el1.right < el2.left ||
  4.                el1.left > el2.right ||
  5.                el1.bottom < el2.top ||
  6.                el1.top > el2.bottom)
  7. }
  8.  
  9. var elemento1 = document.getElementById("elemento1").getBoundingClientRect();
  10. var elemento2 = document.getElementById("elemento2").getBoundingClientRect();
  11.  
  12.  
  13.  
  14. if( detectar_colision(elemento1, elemento2)){
  15.  
  16.  hacer_algo()
  17. }
  18.  




Título: Re: Como evito que se encimen objetos en JS
Publicado por: SrTrp en 14 Julio 2017, 01:02 am
Ya eh intentado carias formas con tu función que me brindaste y funciona me detecta cuando se juntan 2 objetos, pero de una forma y otra intente hacer que no aparecieran los que se juntaran, pero dejan de aparecer todos y no me genera nada pero ya encontré el error y ahora estoy intentando solucionarlo pero voy a las matemáticas xd intentare hacer los calculos igualmente gracias
Código
  1. egenerados[i].x=random(canvas.width/40)*40;


Título: Re: Como evito que se encimen objetos en JS
Publicado por: engel lex en 14 Julio 2017, 01:03 am
No dijiste que era canvas este método es por ejemplo para elementos div span y esos


Título: Re: Como evito que se encimen objetos en JS
Publicado por: SrTrp en 14 Julio 2017, 01:22 am
Con razon igual intentare solucionarlo pero si pudieses brindarme un poco de ayuda yo lo complementaria.


Título: Re: Como evito que se encimen objetos en JS
Publicado por: engel lex en 14 Julio 2017, 01:44 am
Primero aclara cuales son tus objetos, porque así no podemos saber cómo son o como hacer que interactuen


Título: Re: Como evito que se encimen objetos en JS
Publicado por: SrTrp en 14 Julio 2017, 02:29 am
Mi objeto es una variable llamada egenerados que genera enemigos cada cierto tiempo o acción por ejemplo si elimino a un enemigo o pasan 5 segundos se generan aleatoriamente de posiciones horizontal
Código
  1. egenerados [i].x=random(canvas.width/40)*40;//10)*10;
  2.                            egenerados [i].y=0;
  3.                            egenerados [i].evida=2;
  4.                            egenerados .push(new Rectangle(random(canvas.width/40)*40,0,40,40,0,2));