我用JavaScript编写了一个带有html5画布的小游戏,并且处于碰撞检测点并且变得相当困惑。
我在平铺中构建我的关卡,然后将保存的JSON文件导入到游戏中。
在我的关卡绘制功能中,我检查是否有任何图层属性以及图层属性是否是碰撞。如果是,则返回该层并继续循环。完成后,通过碰撞返回的图层将通过另一个循环,以便将图块值放入数组中。
所以在这个数组中,我有一系列数组,具体取决于图层中有多少个图块行,这些行为每个图块保存该行的数据。
我想要做的是当玩家x / y在其中一个不等于0的牌中时,然后发生碰撞。
如果我拥有的是该图块空间中的值,我将如何做到这一点?
Here是游戏实时版本的链接,因此您可以自己查看磁贴的存储方式,我已经放入了一些console.logs,因此您可能需要使用firebug或等效的来查看那。登录使用
澄清我的问题是:我如何在我的玩家x / y和平铺值之间创建碰撞? 非常感谢
更新
好吧所以我想即将到来,我的问题是我如何从数组中读取对象x和y然后检查碰撞,此时碰撞检测与最后一个瓷砖一起工作数组(屏幕的右下角),这是我通过数组实现的代码:
this.check_coll = function(array,posX, posY){
var collided = false,
block_x,
block_y,
block_cx,
block_cy,
combined_hw = 32,
combined_hh = 32,
player_cx = posX+(32/2),
player_cy = posY+(32/2);
array.forEach(function(value,i){
//get obj x
block_x = value[1];
//get obj y
block_y = value[2];
block_cx = block_x+(32/2);
block_cy = block_y+(32/2);
collided = Math.abs(player_cx - block_cx)< combined_hw
&& Math.abs(player_cy - block_cy)< combined_hh;
});
return collided;
}
任何想法的人??