私はJavaScriptのゲームを作っています。弾丸で打たれたときに敵を死ぬことはできません。ここで私はただ理解できないコードの一部です:弾丸で殴ったときに敵を死にさせる
for(var i=0;i<enemies.length;i++){
ctx.fillRect(enemies[i].x,enemies[i].y,30,100);
if(player.x+player.width>enemies[i].x && player.x<enemies[i].x+30 && player.y+player.height>enemies[i].y && player.y<enemies[i].y+100){
document.location.reload();
}
}
for (var b=0;b<bullets.length;b++){
ctx.beginPath();
ctx.arc(bullets[b].x,bullets[b].y,2,0,Math.PI*2);
ctx.fill();
bullets[b].x += bullets[b].dx;
if(bullets[b].x>enemies[i].x && bullets[b].x<enemies[i].x+enemies[i].width && bullets[b].y>enemies[i].y && bullets[b].y<enemies[i].y+enemies[i].height){
enemies.splice(i,1);
}
}
ので、私はこの問題は、それがプロパティの「x」の敵の[i]を、私はdidnのため」を読み取ることができないということであることを知っていますループのためにそれを敵に入れてはいけませんが、それを置くと、弾丸[b]のプロパティ "x"を読むことができません。私はこれで2日間これに執着し、見つけられたすべてのものを検索しましたが、役に立たないものは何も見つかりませんでした。私は助けていただければ幸いです... 事前に感謝!
ここに入れ子にしたループが必要です –
そうですが、私はそれを試みましたが、敵が消えると弾丸がそれ以上発射されません... – Vuxer
@Vuxer Then * that *あなたの本当の問題です。すべての敵に対してすべての弾丸をチェックする必要があります(衝突検出のためのより良いデータ構造とアルゴリズムがなければ)、入れ子にされたforループがそれを行う方法です。 – chepner