Canvas vs DOM Element游戏和碰撞

时间:2014-01-12 00:03:54

标签: javascript jquery canvas game-physics

因此,我试图为练习和乐趣制作一个小游戏(我第一次尝试过)从未与它有任何关系..

你可以看到我到目前为止所做的尝试:http://myfirstgame.e-ddl.com/已经开始工作6-8个小时左右。到目前为止,我意识到在继续之前我会更好地问。

我现在拥有它的方式,我有一个主循环,每20毫秒左右运行一次。 Ihis循环调用2个函数:

  1. 处理击键(遍历障碍阵列并检查玩家未来的位置是否与任何障碍物碰撞,并将玩家的属性更改为未来的位置值)。

  2. 它通过“need update”数组并更改元素的CSS细节以反映所做的更改。

  3. 我有几个问题:

    • 以上是处理碰撞的好主意吗?如果不是更好的方式(我的意思是在地图上大约800-1500个障碍物,游戏会减慢)。

    • 为了计算距离,我使用2点方程之间的距离。如果我只有1点,角度和距离。如何找到第二个点(x,y)?

    • 什么会更好,画布或DOM? (不是重要的问题,因为我已经完成了DOM)。

1 个答案:

答案 0 :(得分:0)

谢谢大家。

我找到了我正在寻找的解决方案。

关于碰撞我的方式是完全错误的,我会列出更正确的方式。

关于距离 - 我想出的解决方案是检查玩家当前位置与物体之间的距离,如果玩家的步长大于距离,则从距离中扣除一步并走出该距离。

至于canvas vs dom - 似乎都有他们的crons和专业人士。

现在发生碰撞 这样做的正确方法是创建一个像素图数组。所以如果你的画布或容器节点是宽度:800高度:500你将有一个代表那些像素的二维数组

然后当我检查位置时,我只需检查玩家的当前位置+未来位置的步数是否有对象。

所以喜欢:

if(array[300][500]){
    return false;
}

这就是我发现的。

如果有人有更好的解决方案,那就让我知道。