1

非常に基本的な HTML5 ゲームを作成していますが、衝突検出が正しく機能していないようです。弾丸が敵と衝突すると、弾丸は有効に設定され、変数が false に設定されます。これは、描画されず、衝突検出に使用されないことを意味しますが、まだ使用されているようです。これが私の衝突検出方法です

//Collision detection between bullet and enemy
for (var j = 0; j < enemies.length; j++ ) 
{
    for (var i = 0; i < bullets.length; i++ ) 
    {
        if( pointInRect( bullets[i].xPos, bullets[i].yPos, enemies[j].xPos, enemies[j].yPos, 32, 32 ) && ( bullets[i].alive == true ) )
        {
            bullets[i].alive = false;
            enemies[j].xPos = -100;
        }
    }
}

ただし、敵と衝突する場合もあれば、弾丸が続く場合もあります。誰でも問題を見ることができますか?必要に応じて、さらにコードを提供できます。

キャンバス

4

1 に答える 1

0

弾丸が作成されたとき。それは誰かがスタックオーバーフローで私を助けてくれたリサイクルシステムを使用していました. しかし、最初の作成でチェックを行うのを忘れていました。コードは次のとおりです。

    for (var i = 0; i < bullets.length; i++ ) 
    {
        if ( ! bullets[i].alive && ! bulletDone ) 
        {
            bulletDone = true;
            bullets[i] = new Bullet( player.xPos + 14, player.yPos);
            console.log( "Bullet created" );
        }
    }

    if ( ! bulletDone ) 
    {
        bullets[bullets.length] = new Bullet( player.xPos + 14, player.yPos);
        console.log( "Bullet created" );
    }

基本的にライン

if ( ! bullets[i].alive && ! bulletDone ) 

だった

if ( ! bullets[i].alive) 

そのため、弾丸が生きていなくても、新しい弾丸が作成され、2 つの弾丸が生成されます。

于 2013-07-25T21:43:16.253 に答える