好的,所以我的簡單碰撞檢測算法不起作用。它總是激活(除非玩家在他的x和/或y平原上沒有任何碰撞)。需要簡單碰撞檢測算法的幫助
嗯,這裏是代碼:
collisionCheck: function(bArray){
for(var i = 0; i < bArray.length; i++){
for(var j = 0; j < bArray[i].length; j++){
if(bArray[i][j].getType() != 0){
if((bArray[i][j].getX() > this.x && bArray[i][j].getX() < this.x + this.width) ||
(bArray[i][j].getX() + blockSize > this.x && bArray[i][j].getX() + blockSize < this.x + this.width) &&
(bArray[i][j].getY() > this.y && bArray[i][j].getY() < this.y + this.height) ||
(bArray[i][j].getY() + blockSize > this.y && bArray[i][j].getY() + blockSize < this.y + this.height)){
this.x = 0;
}
}
}
}
}
查看爲什麼它激活任何原因,當它不應該?
從驗證您布爾邏輯獨立的,這是更短的和更好的:`返回X2 <(X1 + W1)&&(×2 + W2)> x1 && y2 <(y1 + h1)&&(y2 + h2)> y1;` – Phrogz 2011-01-23 20:13:05