Javascript碰撞检测

Javascript Collision Detection

本文关键字:碰撞检测 Javascript      更新时间:2023-09-26

我正在尝试在javascript中制作蛇游戏,但我正在努力进行碰撞检测。到目前为止,我已经尝试了各种方法,但在绝望中,我已经解决了存储每帧片段的所有位置,然后检查在下一个动画之前是否有任何重复。遗憾的是,这种方法也没有被证明是成功的。

也许这是由于JS如何处理数组的误解。有一段时间我使用if(x in y),但从我可以告诉返回,如果完全相同的对象是在一个数组。

下面是现场演示:http://jsfiddle.net/AScYw/2/

下面的代码更容易阅读:http://pastebin.com/ygj73me6

所讨论的代码位于snake对象中,作为函数collide

this.collide = function(){
            for(var z=0; z<this.positions.length-1; z++){
                for(var q=z+1; q<this.positions.length-1; q++){
                    return this.positions[z][0] == this.positions[q][0] && this.positions[z][1] == this.positions[q][1];
                }
            }

这里的函数需要做一些工作,它可能会解决您的问题。

this.collide = function(){
  for(var z=0; z<this.positions.length-1; z++){
    for(var q=z+1; q<this.positions.length-1; q++){
      return this.positions[z][0] == this.positions[q][0] && this.positions[z][1] == this.positions[q][1];
    }
  }
}

2件事是错误的。

  1. 你退出了第一次比较的循环。你会想这样做if(有重叠)返回true然后在两个循环之外返回false如果你成功通过
  2. 你要确保z段= q段,否则你将总是有碰撞

看起来很酷。