0

JavaScript を使用してゲームを構築するために jQuery と gameQuery を調査するのは初めてなので、非常に素朴に見えるかもしれない sth について尋ねていますが、実際には理解できません。

スペースインベーダーのようなゲームを開発しています。プレイヤーのミサイルと敵との衝突の検出が機能しません。

これは私のコードです:

私の敵クラスの定義

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

これは、敵のスプライトを 10 個並べて追加するために使用するコードです。敵は左右に一緒に移動する

$.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 Web サイトのドキュメント チュートリアルに従っていました。

助けていただければ幸いです、ありがとう、

4

2 に答える 2

1

jquery コリジョンプラグインを使用できるので、自分でロジックを実行することは避けられます。

お役に立てれば。乾杯

于 2011-07-03T23:23:19.657 に答える