Javascript 是否有一个有效的jQuery Hittest?

Javascript 是否有一个有效的jQuery Hittest?,javascript,jquery,hittest,Javascript,Jquery,Hittest,我正在用HTML、CSS和JavaScript(jQuery)创建一个简单的游戏。有一艘主舰,所有的粒子(子弹)都来自那里。他们每个人都只是一个小角色。然后,敌人的div是屏幕上随机出现的位置 我正在寻找一种有效的方法来测试每个粒子是否击中了特定的敌人。我有些事情开始进展顺利,但很快就陷入困境。我是js新手,所以我的代码非常混乱,可能在许多其他方面效率低下。如有任何建议,将不胜感激 以下是我创建敌人和测试打击的部分: var createEnemy = function(){ var x

我正在用HTML、CSS和JavaScript(jQuery)创建一个简单的游戏。有一艘主舰,所有的粒子(子弹)都来自那里。他们每个人都只是一个小角色。然后,敌人的div是屏幕上随机出现的位置

我正在寻找一种有效的方法来测试每个粒子是否击中了特定的敌人。我有些事情开始进展顺利,但很快就陷入困境。我是js新手,所以我的代码非常混乱,可能在许多其他方面效率低下。如有任何建议,将不胜感激

以下是我创建敌人和测试打击的部分:

var createEnemy = function(){
    var xRandom = Math.floor(Math.random() * (containerW-50));
    var yRandom = Math.floor(Math.random() * (containerH-50));
    var newEnemy = $('<div class="enemy"></div>');
    $(newEnemy).css({'left':xRandom,'top':yRandom}).appendTo('#container').fadeTo(200, .7);

    var hitTest = setInterval(function(){
        var enemy = $(newEnemy);
        var particle = $('.particle');  

        var enemyT = enemy.offset().top;
        var enemyB = enemy.height()+enemyT;
        var enemyL = enemy.offset().left;
        var enemyR = enemy.width()+enemyL;

        var particleT = particle.offset().top;
        var particleB = particle.height();
        var particleL = particle.offset().left;
        var particleR = particle.width();

        if(particleT >= enemyT-particleB && particleT <= enemyB && particleL >= enemyL-particleR && particleL <= enemyR){
            enemy.hide();
            var removeEnemy = setTimeout(function(){
                newEnemy.remove();
                clearInterval(hitTest, 0);
            },500);
        }
    }, 20);
}

var enemyInt = setInterval(createEnemy, 1000);
var create敌方=函数(){
var xRandom=Math.floor(Math.random()*(containerW-50));
var yRandom=Math.floor(Math.random()*(containerH-50));
var newfeedy=$('');
css({'left':xRandom,'top':yRandom}).appendTo('#container').fadeTo(200,.7);
var hitTest=setInterval(函数(){
var敌人=$(新敌人);
变量粒子=$('.particle');
var enemyT=敌方.offset().top;
var enemyB=敌方高度()+enemyT;
var enemyL=敌方.offset().左;
var enemyR=敌方.width()+enemyL;
var particleT=particle.offset().top;
var particleB=particle.height();
var particleL=particle.offset().left;
var particleR=particle.width();

如果(particleT>=enemyT particle&&particleT=enemyL particleR&&particleL如果您希望获得最佳性能,请删除jQuery并使用本机JavaScript

如果这不是一个选项,那么分析最慢的部分并在那里使用本机DOM,例如

var newEnemy = $('<div class="enemy"></div>');

谢谢,如果我不能加速的话,我以后肯定会改变。我有另一款游戏,它可以更快地生成新的div,而且有更多的样式,看起来效果不错。我想我的问题可能是我每次都会设置20毫秒的密集设置间隔。还有其他方法吗?我会重新设置用本机代码编写一堆jQuery内容,然后对它们进行分析,看看是什么给了您最好的性能增强。根据我的经验,使用本机优于jQuery的性能优势是微不足道的,您会失去它提供的方便性和可读性。我给出的大多数示例确实需要在其他方面进行优化明显的方式。例如,页面上的元素太多。
var newEnemy = document.createElement('div');
newEnemy.className = 'enemy';