簡體   English   中英

游戲查詢碰撞檢測

[英]gameQuery collision detection

這是我第一次探索 jQuery 和 gameQuery 以使用 JavaScript 構建游戲,所以我問的問題可能看起來很幼稚,但我真的無法理解。

我正在開發像 Space Invader 這樣的游戲,檢測玩家導彈和敵人之間的碰撞不起作用。

這是我的代碼:

我的敵人 class 的定義

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;
        }
    }

最后為了碰撞檢測,我想移除玩家導彈擊中的敵人精靈,每個導彈精靈都有一個添加的 class 名稱“.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 function 創建了“enemy_group”?
  • “enemy_group”是否嵌套在像自定義 div 這樣的特殊東西中? 為了使碰撞檢測起作用,您需要一個僅由精靈和組(以及瓦片圖)組成的父鏈
  • “enemy_group”是否嵌套在精靈中,如果是這樣,這是一個壞主意,因為您需要在方法調用中添加此精靈的選擇器,並且此精靈將包含在碰撞元素列表中。
  • “.playerMissiles”也是如此

只是為了確定您使用的是哪個版本的 gameQuery 和 jQuery? gitHub 的最后一個版本不穩定,我不建議使用它,而是使用用戶 0.5.1。

您可以使用jquery 碰撞插件,避免自己做邏輯。

希望這可以幫助。 干杯

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM