Estoy haciendo un juego y necesito una colisión con objetos que reboten, así que si golpeo la pared, rebote.
este es mi codigo
if (xpad < rect2.x + rect2.w && xpad + rect1.w > rect2.x && ypad < rect2.y + rect2.h && rect1.h + ypad > rect2.y) { if(ypad+ 40 == rect2.y) { vert=-vert; //top of the cube } if(ypad == rect2.y + rect2.h) { vert=-vert; //bottom of cube } if(xpad + 40 == rect2.x) //40 is the width of my player and i didn't use rect1.h { horz=-horz; //left of the cube } if(rect2.x + rect2.w == xpad) { horz=-horz; //right of the cube } }
Además, el ciclo que uso para llamar a mis funciones y otras cosas ya se está ejecutando sin demora, por lo que no puedo disminuir la demora.
Los dos vars que estoy usando para la colisión son
var rect1={ x:xpad, y:ypad, w:40, h:40 }; var rect2={ x: 150, y: 200, w:100, h:100 };
el xpad/ypad se incrementa lo que empuja el cubo o el jugador
xpad y ypad típicos = 1, esto funciona con mi colisión, pero este problema comienza cuando aumento la velocidad o xpad / ypad a 2, luego comienza a atravesar paredes y objetos, entonces, ¿cómo puedo solucionar esto o cambiar mi código para permitir diferentes velocidades? forma 1 a 3
ENLACE PARA VER/PROBAR CÓDIGO:
https://javascriptss.glitch.me/testing.html para probar
https://javascriptss.glitch.me/scriptcol.js para ver