2014-09-04 56 views
0

我有瓷磚地圖碰撞整理出來...有點。一些瓷磚反應很好。其他人,不是那麼多。如果它碰到並從什麼方向來看,它是非常不一致的,而且一旦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; 
} 

} 

如果您有任何改善碰撞的方法,請隨時提出,我正在尋找任何方法使它不那麼有問題。

回答

0

您的x和y變量在render()函數的循環內切換。

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

應該

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

謝謝你的人,你真棒,可以相信我沒想到看那個。 – user3843041 2014-09-04 02:58:49