0
私は古いGalagaゲームを思い起こさせるトップダウンシューティングゲームを作ろうとしています。 私は、プレイヤーと敵の砲弾との衝突と、敵の宇宙船との衝突をチェックしようとするときとは別に、敵と投射物を動かして、うまく動くようにしました。javascriptの衝突検出に関するアドバイス
弾丸と敵の両方がコンストラクタを使用して作成され、それらを追跡するために配列に配置されます。
//due to the number of enemies on screen they'll be held in an array
var enemies = [];
for(e = 0; e < enemies; e++) {
enemies[e] = [];
enemies[e] = {x:0,y:0};
}
//class constructor to create enemies
class enemy {
constructor(x,y) {
this.enemyX = x;
this.enemyY = y;
this.enemyWidth = 32;
this.enemyHeight = 32;
}
}
//variable array for the bullets
var playerBullets = [];
for(i = 0; i < playerBullets; i++) {
playerBullets[i] = { x: 0, y: 0 };
}
//class constructor to create the bullets
class bullet {
constructor(x,y){
this.bulletX = x;
this.bulletY = y;
this.bulletWidth = 5;
this.bulletHeight = 5;
}
}
私は国境をオーバーラップするための第1弾の配列を通過し、衝突検出機能と、その後の敵とチェックの配列を作るために、衝突が発見されたときに警告を与えることを試みているが、私は」それに問題があります。もし誰かが助けることができれば、私はそれを高く評価します。
//code for detecting collisions from the bullets
function collisionDetection() {
for(i = 0; i < playerBullets.length; i++) {
for(e = 0; e < enemies.length; e++) {
if (playerBullets[i].x < enemies.x + enemy.width &&
playerBullets[i].x + bullet.width > enemies.x &&
playerBullets[i].y < enemies.y + enemy.height &&
playerBullets[i].y + bullet.height > enemies.y){
alert("HIT");
}
}
}
}
https://codereview.stackexchange.comを/ – Peter
@Peterコードが動作状態にあるときにコードを投稿することができます。しかしそれまでは、OPは "_私はそれに問題がありました。"と打ち明けたので、[トピック外](https://codereview.stackexchange.com/help/on-topic)になります。 –
残念ですが、弾丸と敵がともに円形の場合、Pythagorean定理で中点距離を計算するだけです.Cが小さい場合は2つの円の無線が命中します。 – Peter