tilemap碰撞不能正常工作

时间:2014-09-04 01:28:05

标签: javascript

我将tilemap碰撞整理出来......有点儿。一些瓷砖反应很好。其他人,不是那么多。如果碰撞和从什么方向撞击它确实是不一致的,一旦x击中480度,它就会产生某种障碍。 这里是jsfiddle,所以你可以看看我在说什么 http://jsfiddle.net/t0ahc5qa/ 因为你可以看到它只是逐步通过的一些块,而其他块则没有。 这里是碰撞的地方。

function checkmove(x,y){
  if(mapArray[Math.floor(x/tileWidth)][Math.floor(y/tileHeight)]==1 ||
    mapArray[Math.ceil(x/tileWidth)][Math.floor(y/tileHeight)]==1 ||
    mapArray[Math.floor(x/tileWidth)][Math.ceil(y/tileHeight)]==1 ||
    mapArray[Math.ceil(x/tileWidth)][Math.ceil(y/tileHeight)]==1){
            console.log('hit');

     return false;
 } else {

return true;
}
if(mapArray[Math.floor(x/tileWidth)][Math.floor(y/tileHeight)]==2 ||
mapArray[Math.ceil(x/tileWidth)][Math.floor(y/tileHeight)]==2 ||
mapArray[Math.floor(x/tileWidth)][Math.ceil(y/tileHeight)]==2 ||
mapArray[Math.ceil(x/tileWidth)][Math.ceil(y/tileHeight)]==2){
    console.log('lava');

 return false;
} else {

return true;
}

}

如果您有任何方法可以改善碰撞,请随意,我正在寻找任何方法来使它不那么多。

1 个答案:

答案 0 :(得分:0)

您可以在render()函数的循环内切换x和y变量。

context.drawImage(tile1, y*tileWidth,x*tileHeight,tileWidth,tileHeight);

应该是

context.drawImage(tile1, x*tileWidth,y*tileHeight,tileWidth,tileHeight);