今天呢原本是要寫敵人被擊中後被消除的過程,但是呢有點問題,我需要一些時間來解決.
那還是先把到目前為止的程式記錄下來.明天會再針對今天的問題進行除錯.
我的想法是在,移動子彈的過程,一邊檢查是否有擊中敵人
// 移動子彈
moveBullet = () => {
// 玩家發射子彈
if(player_shot) {
bullet_y -= BULLET_SPEED;
//確認子但是否擊中
shootCheck(bullet_x, bullet_y);
// 若子彈超出邊界,重新上膛
if(bullet_y < 0) {
player_shot = false;
}
}
}
這邊單純的引入今天新加入的函式,是沒有問題的.
// 是否擊中
shootCheck = (x, y) => {
var col = Math.floor ((x - enemy_distance) / ENEMY_R);
var row = Math.floor ((y - enemy_distance) / ENEMY_R);
var enemyIndex = enemyToIndex(col, row);
if(enemy_grid[enemyIndex] == 1) {
enemy_grid[enemyIndex] = 0;
player_shot = false;
}
}
這邊就是測試的函式,到這邊我做了個測試.
可以看到,子但確實消滅了敵人,但卻是打死錯誤位置的敵人.
這個問題需要重新回去看一下顯示敵人位置的code.會花點時間.今天時間有點緊湊,我們明天開始除錯吧.