Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 这是新的碰撞系统还是有故障的碰撞系统?_Javascript_Collision Detection_Collision - Fatal编程技术网

Javascript 这是新的碰撞系统还是有故障的碰撞系统?

Javascript 这是新的碰撞系统还是有故障的碰撞系统?,javascript,collision-detection,collision,Javascript,Collision Detection,Collision,我正在做一个自上而下的2D游戏,里面有方块碰撞。从本质上讲,这段代码只是在剩下的所有像素上进行迭代,以检查是否存在“冲突”。如果没有移动框。我没有看到其他人这样做,所以我想知道。此系统可能有什么故障 if (keyLeft) { var canMove = true; for(var x = 0; x < 64; x++){ var tile = this._world.getTile(new Vector2(this._position.x - 2, this._posi

我正在做一个自上而下的2D游戏,里面有方块碰撞。从本质上讲,这段代码只是在剩下的所有像素上进行迭代,以检查是否存在“冲突”。如果没有移动框。我没有看到其他人这样做,所以我想知道。此系统可能有什么故障

if (keyLeft)
{
  var canMove = true;
  for(var x = 0; x < 64; x++){
    var tile = this._world.getTile(new Vector2(this._position.x - 2, this._position.y + x));
    if(tile != undefined){
      if(tile.material.isCollidable == true){
        canMove = false;
        this._hsp = 0;
      }
    }
  }
  if (canMove == true){
    this._position.x -= 2;
  }
}
if(左键)
{
var canMove=true;
对于(变量x=0;x<64;x++){
var tile=this.\u world.getTile(新向量2(this.\u position.x-2,this.\u position.y+x));
如果(平铺!=未定义){
if(tile.material.isCollidable==true){
canMove=false;
这个._hsp=0;
}
}
}
if(canMove==true){
这是._位置x-=2;
}
}

它们是我的变量:this.\u hsp是播放器的水平速度。this.\u world.getTile只是检查像素位置上的对象。在代码的后一部分中,它检查该对象是否可碰撞。tile.material.isCollidable是检查位于指定像素位置的块或“tile”是否可碰撞。您似乎在从左到右迭代块。如果玩家向左移动,你不应该从右向左检查以获得玩家将与之碰撞的第一个方块吗?另外,为什么要将x坐标添加到y位置?此外,您似乎根本没有检查播放器是否与块发生碰撞(除非按“左”键时播放器会尽可能向左移动),而是检查该路径上是否存在可碰撞块。在这种情况下,您需要提供更多代码并提出更具体的问题,以获得有用的帮助。