因此,我试图为练习和乐趣制作一个小游戏(我第一次尝试过)从未与它有任何关系..
你可以看到我到目前为止所做的尝试:http://myfirstgame.e-ddl.com/已经开始工作6-8个小时左右。到目前为止,我意识到在继续之前我会更好地问。
我现在拥有它的方式,我有一个主循环,每20毫秒左右运行一次。 Ihis循环调用2个函数:
处理击键(遍历障碍阵列并检查玩家未来的位置是否与任何障碍物碰撞,并将玩家的属性更改为未来的位置值)。
它通过“need update”数组并更改元素的CSS细节以反映所做的更改。
我有几个问题:
以上是处理碰撞的好主意吗?如果不是更好的方式(我的意思是在地图上大约800-1500个障碍物,游戏会减慢)。
为了计算距离,我使用2点方程之间的距离。如果我只有1点,角度和距离。如何找到第二个点(x,y)?
什么会更好,画布或DOM? (不是重要的问题,因为我已经完成了DOM)。
答案 0 :(得分:0)
谢谢大家。
我找到了我正在寻找的解决方案。
关于碰撞我的方式是完全错误的,我会列出更正确的方式。
关于距离 - 我想出的解决方案是检查玩家当前位置与物体之间的距离,如果玩家的步长大于距离,则从距离中扣除一步并走出该距离。
至于canvas vs dom - 似乎都有他们的crons和专业人士。
现在发生碰撞 这样做的正确方法是创建一个像素图数组。所以如果你的画布或容器节点是宽度:800高度:500你将有一个代表那些像素的二维数组
然后当我检查位置时,我只需检查玩家的当前位置+未来位置的步数是否有对象。
所以喜欢:
if(array[300][500]){
return false;
}
这就是我发现的。
如果有人有更好的解决方案,那就让我知道。