我已经有了一个基本的太空侵略者类型的游戏,并且我无法识别何时玩家的击球击中了外星人。 (我只检查Alien2 atm,从左边一秒)。既然它们都在移动,我已经决定检查碰撞的唯一方法是使用基于范围的if语句(带有2个顶部坐标和一个左侧坐标),或者直接比较沿Y轴与Jquery的位置。检测两个移动物体之间的碰撞
我目前使用基于范围的解决方案,但到目前为止它没有工作(不知道为什么)。
我迄今为止代码:
if (key == "87"/*&& document.getElementById('BarrelOne').id=='BarrelOne'*/){
var Invader2 = document.getElementById('Alien2');
var Shot1 = document.getElementById('ShortShot');
Shot1.style.webkitAnimationPlayState="running";
setTimeout(function(){
Shot1.style.webkitAnimationPlayState="paused";
}, 1200);
if(document.elementFromPoint(625.5, 265.5) == Shot1){
Invader2.style.visibility="hidden";
}
};
的jsfiddle:
您没有使用的jsfiddle正确.... – bobthyasian
'的document.getElementById( 'Alien2')。style.top <=“265.5px”'不是一个很好的比较。使用jQuery并获取该元素的'offset()。top'作为数字。 – Blender
检测_“冲突”_ IMO的最简单方法是:'Math.abs()',节点的偏移量(jQuery或no)以及 - 也许是最被低估的DOM API方法文档的组合。 getElementFromPoint':[检查MDN在这里](https://developer.mozilla.org/en-US/docs/DOM/document.elementFromPoint),看看它是如何工作的 –