0

collision()を使用してゲームの衝突を処理しようとしていますが、何が起こっているのかわかりません。要約は次のとおりです。

    $("#screen").playground({height: PLAYGROUND_HEIGHT, width: PLAYGROUND_WIDTH});
$.playground().addSprite("wall",{animation:anim_mur, posx: 0, posy: -100, width: PLAYGROUND_WIDTH, height: PLAYGROUND_HEIGHT+300})
    .addSprite("table",{animation:anim_tableau, posx: 459, posy: 122, width: PLAYGROUND_WIDTH, height: PLAYGROUND_HEIGHT});
$.playground().addGroup('enemies', {width: 320, height: 280}).end()
            .addSprite("sp_bed",{animation:anim_bed, posx: PLAYGROUND_WIDTH-400, posy: 210, width: 320, height: 280})

そして、そこで衝突を処理します

$("#sp_viseur").collision("#enemies").each(function(){
    alert('test');
    });

そして、別の関数で「敵」グループをスプライトで埋めます。「sp_viseur」スプライトが「敵」グループのスプライトと衝突するたびに関数が呼び出されるようにしたいのですが、関数が呼び出されることはありません!さらにいくつかのテストを実行したので、質問があります:「衝突」関数はどのように機能しますか? css 属性 (左、上...) またはゲームクエリ属性 (posx、posy) を使用しますか?

ありがとう。

PS: "sp_viseur" が他のスプライトと同様にプレイグラウンドに追加されました。

4

1 に答える 1

1

申し訳ありませんが、私の答えはあなたが求めていたものとは正確に一致していないことに気づきました。

.collision()はグループとの衝突を返さないため、.collisionセレクターに、すべての敵のスプライトに適用されるクラス(.collision('#enemies、.enemies')など)を追加する必要があります。Gamequeryはposxプロパティとposyプロパティを使用しますが、.x()関数と.y()関数を使用する場合は、それらを同期する必要があります。

于 2012-04-08T08:57:36.717 に答える