gameQuery冲突检测

gameQuery collision detection

本文关键字:冲突检测 gameQuery      更新时间:2023-09-26

这是我第一次探索使用JavaScript构建游戏的jQuery和gameQuery,所以我问一些看起来很天真的问题,但实际上我无法理解。

我正在开发一款类似《太空入侵者》的游戏,检测玩家导弹和敌人之间的碰撞。

这是我的代码:

我的敌人级的定义

function Enemy(node){
    this.node = $(node);
    this.pts_value = 0;
    return true;
}

这是我用来添加十个相邻的敌方精灵的代码。敌人一起向左右移动

$.each(new Array(10), function(index, value) {
    $("#enemy_group").addSprite("enemy2_"+index,{animation: enemies[2],
         posx: index * 55, posy: 0, width: 48, height: 48})
    $("#enemy2_"+index).addClass("enemy");
    $("#enemy2_"+index)[0].enemy = new Enemy($("#enemy2_"+index));
    $("#enemy2_"+index)[0].pts_value = 150;
});

所以当我需要移动敌人时,我会将敌人一起移动,我会移动包括所有精灵的群组"#enemy_group">

    if(ENEMY_TO_RIGHT){
        var enemiesNewPos = (parseInt($("#enemy_group").css("left"))) + ENEMY_SPEED;
        if(enemiesNewPos < PLAYGROUND_WIDTH - 550){
            $("#enemy_group").css("left", ""+enemiesNewPos+"px");
        } else {
            ENEMY_TO_RIGHT = false;
        }
    } else {
        var enemiesNewPos = (parseInt($("#enemy_group").css("left"))) - ENEMY_SPEED;
        if(enemiesNewPos > 0){
            $("#enemy_group").css("left", ""+enemiesNewPos+"px");
        } else {
            ENEMY_TO_RIGHT = true;
        }
    }

最后,对于碰撞检测,我想删除玩家导弹击中的敌人精灵,每个导弹精灵都添加了一个类名".playerMissiles">

    $(".playerMissiles").each(function(){
        var posy = parseInt($(this).css("top"));
        if(posy < 0){
            $(this).remove();
            return;
        }
        $(this).css("top", ""+(posy - MISSILE_SPEED)+"px");
        //Test for collisions
        var collided = $(this).collision(".enemy, .group");
        if(collided.length > 0){
            //An enemy has been hit!
            collided.each(function(){
                $(this).setAnimation(enemies[0], function(node){$(node).remove();});
            })
        }
    });

我在gameQuery网站上学习文档教程。

感谢任何帮助,

我看不出您的代码有任何问题。我只能给你几个建议:

  • 您是否使用addGroup函数创建了"enemy_group">
  • "enemy_group"是否嵌套在诸如自定义div之类的特殊内容中?为了进行碰撞检测,您需要一个仅由精灵和组(以及平铺贴图(组成的父级链
  • 是嵌套在精灵中的"enemy_group",如果是这样,那就不好了,因为您需要在方法调用中添加该精灵的选择器,并且该精灵将包含在冲突元素列表中
  • ".playerMissiles"也是如此

只是为了确定你使用的是什么版本的gameQuery和jQuery?gitHub的最后一个版本不稳定,我不会建议使用它,而是用户0.5.1。

您可以使用jquery冲突插件,这样就可以避免自己处理逻辑。

希望这能有所帮助。干杯