我用 html5 画布用 JavaScript 编写了一个小游戏,并且正处于碰撞检测点并且变得相当困惑。
我以平铺的方式构建关卡,然后将保存的 JSON 文件导入游戏。
在我的水平绘制功能中,我检查是否有任何图层属性以及图层属性是否存在冲突。如果是,则返回该层并继续循环。完成后,与碰撞返回的图层将通过另一个循环,以便可以将平铺值放入数组中。
所以在这个数组中,我有一系列数组,具体取决于图层中有多少行瓷砖,这些行保存每个瓷砖的该行的数据。
我想做的是当玩家 x/y 在不等于 0 的瓷砖之一中时,然后碰撞。
如果我所拥有的只是该瓷砖空间中的价值,我将如何做到这一点?
这是游戏实时版本的链接,因此您可以自己查看图块的存储方式,我已经放入了一些 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;
}
有什么想法吗?