Javascript 理论上,这个For循环是否有效?

Javascript 理论上,这个For循环是否有效?,javascript,for-loop,collision-detection,Javascript,For Loop,Collision Detection,在碰撞检测中,我有一个关于类似问题的问题,但它并不完全相同。我在一个新的游戏项目中遇到了一个问题(我正在努力学习更多关于HTML5画布和Socket.io的知识),在这个项目中,我的冲突无法工作。我原以为我的问题集中在碰撞上,但现在我开始思考一些不同的东西。我之所以在for循环区域发布不同的问题,是因为我不确定我的问题是与for循环相关还是与碰撞检测相关。不管怎样,我很乐意记下我的一个问题 该代码循环每一帧,以获取子弹和飞船的活动位置。如果子弹碰到飞船,它将被移除,一些健康点将从飞船上移除 我使

在碰撞检测中,我有一个关于类似问题的问题,但它并不完全相同。我在一个新的游戏项目中遇到了一个问题(我正在努力学习更多关于HTML5画布和Socket.io的知识),在这个项目中,我的冲突无法工作。我原以为我的问题集中在碰撞上,但现在我开始思考一些不同的东西。我之所以在for循环区域发布不同的问题,是因为我不确定我的问题是与for循环相关还是与碰撞检测相关。不管怎样,我很乐意记下我的一个问题

该代码循环每一帧,以获取子弹和飞船的活动位置。如果子弹碰到飞船,它将被移除,一些健康点将从飞船上移除

我使用的教程:

除此之外,这是我的代码。碰撞函数似乎正在工作,因为每次迭代时,当我开始记录所有位置时,我的对象的位置似乎每次都在变化。这是我需要回调的for循环问题之一吗

提前非常感谢你的帮助。我一定会投票/选择每一个有帮助的回答!:)

解决了!结果是我的一个数组没有被正确传入。我要感谢你们告诉我总是把它分成多个函数,这真的帮助我弄明白了这一点

// Let's start out here: I have a players[] array
//that's essentially a list of all players on the server
// and their positions. I omitted server connection functionality since that's not my error
// source.
function checkCollisions() {
    for (var i = 0; i < players.length; i++) { // Iterating through all players
        var pos = [players[i].posX, players[i].posY];
        var size = [SHIP_WIDTH, SHIP_HEIGHT]; // This is the size of each player, it's a ship game. So these are constants.
        if (players[i].userId != PLAYER.userId) { // Each player has a userId object, this is just doublechecking if we're not uselessly iterating
            for (var j = 0; j < bullets.length; j++) { // We're now looping through bullets, an array of all the bullets being shot by players
                var pos2 = bullets[j].pos;
                var size2 = BULLET_SIZE;
                var sender = bullets[j].sender;
                if (boxCollides(pos, size, pos2, size2)) { // Collision code
                    if (sender != players[i].userId) {
                        bullets.splice(j, 1);
                        i--; // Tried here with j--, and by removing the entire line. Unfortunately it doesn't work :(
                        break;
                    }
                }
            }
        }
    }
}
//让我们从这里开始:我有一个players[]数组
//这实际上是服务器上所有玩家的列表
//以及他们的立场。我省略了服务器连接功能,因为这不是我的错误
//来源。
函数checkCollisions(){
对于(var i=0;i
您是否尝试使用console.log查看程序在何处中断?这可能有助于您确定是否存在多个错误,或者只是这一个错误。如果前面的语句中有错误,您可能不知道是否已修复i--/j--


编辑:啊,在我发布这篇文章之后,我看到你已经解决了一些问题。恭喜你,干得好!

当你打电话给
我--;
?-我不确定我是否得到了那个部分?另外,对你的代码进行注释有助于其他人阅读它-我建议一些注释是为了达到这个目的。老实说,我在使用教程为此,他们使用了我…。我会添加上面教程的链接。但即使删除了我…,我仍然有这个奇怪的错误。明白了,我也会添加一些注释。哦,我的道歉。这个代码会循环每一帧,以获取子弹和飞船的活动位置。如果子弹碰到飞船,它会被删除,一些健康点也会被删除把它从船上取下来。把它添加到描述中……我会把它分解成几个函数:这是一种代码,它可以bug,如果你把它分散在几个函数上,它会更容易发现和修复潜在的问题。然后你必须考虑它不是唯一错误的可能性。谢谢你的帮助!是的,当我把这个修好的时候感觉真棒:)