我知道有几个类似的问题,但不幸的是,就我的问题而言,它们并不是我的问题的答案......
在过去的几个晚上,每当我有空闲时间,我一直在努力创造一种类型的游戏,你可以看到一个片段/示例here(WASD要移动 - 注意:它还不是跨浏览器兼容的)
我正在使用一个名为jQuery Collision的插件,它在理论上完全符合我的要求,但是给出的示例是用鼠标拖动对象完成的,我有一些麻烦添加它进入了我的实验。
我尝试将此添加到我的'W'键,试图说明当玩家与障碍物碰撞时,应该移除障碍物。
if ($("#player").collision("#obstacle")) {
$("#obstacle").remove();
}
目前障碍物正在被移除但有时出乎意料地,如果你将玩家置于障碍物下方并按下W(向上),即使玩家和障碍物尚未相撞,该框也会被移除。
我也尝试了其他方式,我在演示中看到过,我也无法工作:
var collided = $("#player").collision("#obstacle");
if (collided.length > 0) {
$("#obstacle").remove()
}
有人能说清楚我做错了吗?
注意
我知道有像gameQuery那样的插件,所以请不要建议我只使用它:)
答案 0 :(得分:0)
尝试用于处理拖动的插件:
http://sourceforge.net/projects/jquidragcollide/
原来的事实是,当你拖动时,div的当前位置在你放手之前还没有更新。它本来是一个静态碰撞检查器。如果你仔细看看这些例子:
http://eruciform.com/jquerycollision/
...你会看到,当你拖动时,“重叠”就是一帧。为了不假设模块的预期用途(即拖动),我将其保留为使用jQuery认为div所处的任何坐标。这就是我创建拖动添加插件的原因。它还有许多其他的花里胡哨,就像拖动过程中的“避碰”一样。