碰撞检测不会在限制范围内返回

时间:2018-05-28 14:03:58

标签: javascript

完整代码here

我正在尝试设置检测冲突的功能,现在只需登录到控制台。这是checkCollision函数的部分;

Player.prototype.update = function(dt) {
  checkCollision(this.leftLimit, this.rightLimit);
  this.leftLimit = this.x - 40.5;
  this.rightLimit = this.x + 40.5;
}

function checkCollision(playerl,playerr) {
  for (var i = 0; i < 5; i++) {
      var thisEnemy = allEnemies[i];
      if (thisEnemy.leftlimit > playerl && thisEnemy.rightLimit < playerr) {console.log("1")}
      else {console.log('else')}
    }
}

问题

角色永远不会记录为与敌人发生碰撞,为什么这不起作用?

测试/调试

我知道此功能正在作为控制台记录其他功能,我还将日志记录放在其他位置,而在Enemy.prototype.update函数中,控制台显示的值为202.000000093,因为for..else函数正在使用&lt;或者&gt;,不是绝对值,应该没问题,但在玩家左右限制内仍然没有任何匹配。我也尝试将敌人的限制改为更小,+ / - 40.5,因为敌人太宽而无法适应玩家的限制。

2 个答案:

答案 0 :(得分:0)

当checkCollision方法首次运行时,

player.leftLimit和player.rightLimit未定义

答案 1 :(得分:0)

我添加了一个更好的if语句来检查是否存在冲突;

 if (
    thisEnemy.leftLimit < player.rightLimit &&
    thisEnemy.rightLimit > player.leftLimit &&
    thisEnemy.upperLimit > player.lowerLimit &&
    thisEnemy.lowerLimit < player.upperLimit) {
    console.log("collision");
}