如何处理与tile id javascript的冲突

时间:2013-04-14 14:44:11

标签: javascript jquery html5 canvas collision-detection

我用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;
}

任何想法的人??

0 个答案:

没有答案