Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/426.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何处理与瓦片id javascript的冲突_Javascript_Jquery_Html_Canvas_Collision Detection - Fatal编程技术网

如何处理与瓦片id javascript的冲突

如何处理与瓦片id javascript的冲突,javascript,jquery,html,canvas,collision-detection,Javascript,Jquery,Html,Canvas,Collision Detection,我用JavaScript编写了一个带有html5画布的小游戏,我正处于冲突检测的阶段,感到相当困惑 我在平铺中构建我的关卡,然后将保存的JSON文件导入到游戏中 在“标高绘制”函数中,我检查是否存在任何图层特性,以及图层特性是否存在冲突。如果返回,则返回该层并继续循环。完成后,返回冲突的层将通过另一个循环,以便将平铺值放入数组中 所以在这个数组中,我有一系列的数组,这取决于层中有多少行磁贴,这些行保存了每一行的数据 我想做的是当玩家x/y在一个不等于0的平铺中时,然后碰撞 如果我所拥有的只是该平

我用JavaScript编写了一个带有html5画布的小游戏,我正处于冲突检测的阶段,感到相当困惑

我在平铺中构建我的关卡,然后将保存的JSON文件导入到游戏中

在“标高绘制”函数中,我检查是否存在任何图层特性,以及图层特性是否存在冲突。如果返回,则返回该层并继续循环。完成后,返回冲突的层将通过另一个循环,以便将平铺值放入数组中

所以在这个数组中,我有一系列的数组,这取决于层中有多少行磁贴,这些行保存了每一行的数据

我想做的是当玩家x/y在一个不等于0的平铺中时,然后碰撞

如果我所拥有的只是该平铺空间中的值,我将如何做到这一点

是一个到游戏的实时版本的链接,这样你就可以自己看到瓷砖是如何存储的,我已经在一些console.log中放了一些,所以你可能想使用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;
}

任何意见都是在forEach之外的,这意味着只有最后一个任务才重要。也许你可以使用数组。一些?