完整代码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,因为敌人太宽而无法适应玩家的限制。
答案 0 :(得分:0)
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");
}