Javascript 检查碰撞功能在同一位置的两个对象上是否匹配

Javascript 检查碰撞功能在同一位置的两个对象上是否匹配,javascript,Javascript,完整代码 我注意到,如果在同一位置有两个bug,玩家发生碰撞,它会计算两个死亡,因为从技术上讲,它与两个不同的物体发生碰撞,我如何将此更改为一次检查碰撞1,或者只计算1个死亡 checkCollision(playerl,playerr) { //check collision for each bug for (var i = 0; i < 5; i++) { var thisEnemy = allEnemies[i]; if (

完整代码

我注意到,如果在同一位置有两个bug,玩家发生碰撞,它会计算两个死亡,因为从技术上讲,它与两个不同的物体发生碰撞,我如何将此更改为一次检查碰撞1,或者只计算1个死亡

checkCollision(playerl,playerr) {
  //check collision for each bug
  for (var i = 0; i < 5; i++) {
        var thisEnemy = allEnemies[i];
        if (
           thisEnemy.leftLimit < player.rightLimit &&
           thisEnemy.rightLimit > player.leftLimit &&
           thisEnemy.upperLimit > player.lowerLimit &&
           thisEnemy.lowerLimit < player.upperLimit) {
           console.log("collision");
           //console.log(player.lowerLimit, player.upperLimit, thisEnemy.lowerLimit, thisEnemy.upperLimit)
          player.loseLife();
       }
    }
};
checkCollision(playerl,playerr){
//检查每个错误的冲突
对于(变量i=0;i<5;i++){
var This仇敌=所有敌人[i];
如果(
此敌人。左极限<玩家。右极限&&
此敌人.rightLimit>player.leftLimit&&
此敌人.upperLimit>player.lowerLimit&&
This敌军。下限<玩家。上限){
控制台日志(“冲突”);
//console.log(player.lowerLimit,player.upperLimit,thisfound.lowerLimit,thisfound.upperLimit)
player.loseLife();
}
}
};

为什么不在死一次后使用setTimeout来实现短时间的无敌

//somewhere in your code
var dying = false;

checkCollision(playerl,playerr) {
  //check collision for each bug
  for (var i = 0; i < 5; i++) {
        var thisEnemy = allEnemies[i];
        if (
            thisEnemy.leftLimit < player.rightLimit &&
            thisEnemy.rightLimit > player.leftLimit &&
            thisEnemy.upperLimit > player.lowerLimit &&
            thisEnemy.lowerLimit < player.upperLimit &&
            dying==false) {

            console.log("collision");
            dying=true; // dying is true, so we wont end up in this block again
            setTimeout(function(){
                dying=false; //after 500 milliseconds we set dying to false so our player has the ability to die again!
            },500);
            player.loseLife();
       }
    }
};
//代码中的某个地方
var=false;
检查碰撞(playerl,playerr){
//检查每个错误的冲突
对于(变量i=0;i<5;i++){
var This仇敌=所有敌人[i];
如果(
此敌人。左极限<玩家。右极限&&
此敌人.rightLimit>player.leftLimit&&
此敌人.upperLimit>player.lowerLimit&&
此敌人。下限<玩家。上限&&
死亡==假){
控制台日志(“冲突”);
垂死=真;//垂死是真的,所以我们不会再回到这个街区了
setTimeout(函数(){
垂死=false;//500毫秒后,我们将垂死设置为false,这样我们的玩家就可以再次垂死!
},500);
player.loseLife();
}
}
};

正是我想要的,我试图在其他地方添加一个setTimeout,但没有成功,效果很好。我看到超时设置在500毫秒后变为false,足以让reset或gameover函数运行。谢谢