需要帮助合并2个位置数组和for循环

时间:2016-10-03 18:44:33

标签: javascript arrays for-loop

我正在制作游戏,我有2个阵列,一个用于子弹变量,另一个用于敌人变量。它们都有单独的for循环,使对象起作用,移动,跟随,瞄准等。我只担心现在的x和y值,它们存储在前2个数组值中(因此可能是敌人[0] [0]是x值)。

无论如何我可以合并2以便他们互动吗?

for(var i = 0; i<enemies.length;i++){
    enemies[i][0]+=blah blah blah;
    enemies[i][1]+=blah blah blah;
}

for(var i = 0; i<bullets.length;i++){
    bullets[i][0]+=blah blah blah;
    bullets[i][1]+=blah blah blah;
}

基于评论,这是我的游戏

http://imgur.com/B2vQGOQ

1 个答案:

答案 0 :(得分:2)

for(var i = 0; i < Math.max(enemies.length, bullets.length);i++){
    if(i < enemies.length){
        enemies[i][0]+=blah blah blah;
        enemies[i][1]+=blah blah blah;
    }
    if(i < bullets.length){
        bullets[i][0]+=blah blah blah;
        bullets[i][1]+=blah blah blah;
    }
}

基于评论的另一种方式:

for(var i = 0; i < bullets.length; i++){
    //for each bullet
    bullets[i][0]+=blah blah blah;
    bullets[i][1]+=blah blah blah;

    for(var j = 0; j < enemies.length;j++){
        // each enemy
        enemies[j][0]+=blah blah blah;
        enemies[j][1]+=blah blah blah;

        if(enemies[j].BBox.checkCollision(bullets[i])){
            // they collide
        }
    }
}

如果你只有x和y坐标很难检查碰撞你需要边界框甚至可能是子弹,我建议你使用OOP

如果您至少有偏移,可以像这样进行碰撞检查:

var bbox = {
    'x': 0,
    'y': 0,
    'width': 100,
    'height': 200
};

bbox.checkCollision = function(bullet){
    return (bullet[0] > bbox.x && bullet[0] < bbox.x + bbox.width
        && bullet[1] > bbox.y && bullet[1] < bbox.y + bbox.height);
}

for(var i = 0; i < bullets.length; i++){
    for(var j = 0; j < enemies.length;j++){
        bbox.x = enemies[j][0];
        bbox.y = enemies[j][1];

        if(bbox.checkCollision(bullets[i])){
            // bullets[i] collide with enemies[j]
        }
    }
}