我正在研究一个HTML5 Runner Game,该对象连续运行,并在鼠标事件“单击”时跳跃。然后我给游戏添加一个障碍并检测碰撞,但是它不能正常工作。问题是,当障碍与跑步物体碰撞一次并检测到碰撞时,清除所有物体,然后在画布上重新绘制障碍物,但障碍物一次又一次与对象障碍物的速度变得快速和快速碰撞.... :( 问题是如何克服它下面是代码:?HTML5 Canvas游戏碰撞检测问题
function clearHurdle(){
h.clearRect(100,hy,160,250);
//if(hx==paiX||hy==paiY){
bl= new Image();
bl.onload= function(){
h.drawImage(bl,100,hy-20,160,250);
};
bl.src= "blast.png";
setTimeout(function(){
h.clearRect(100,hy-20,160,250);
show_char=0;
clearAll();
//drawpai();
hurdle();
},100);
}
function hurdle(){
if(hx>(paiX-2) && hx<(paiX+2) && hy>(paiY-2) && hy<(paiY+2)){
console.log(hx +'===='+(paiX-2));
clearHurdle();
hx=1360;
}
h.clearRect(hx,hy,170,250);
var img = new Image();
img.onload= function(){
h.drawImage(img,hx,hy,170,250);
}
img.src="hurdle.png";
hx-= 4.5;
if(hx>-400){
setTimeout(hurdle,1000/60);
}
show_char=1;
}
我相信这是因为'clearHurdle'函数中的setInterval。它第一次运行良好,但是因为setTimeout调用函数'hurdle'(然后调用'clearHurdle'回到一个无止境的循环中),因此增加了第二个setInterval。为了解决这个问题,你需要为setInterval声明一个变量名,并使用'clearInterval(varName)'来每次重置它 –
谢谢@Zeaklous它的工作。 :)感谢您的帮助巴迪。 –