0

私は最初の html5 キャンバス ゲームを作成しようとしていますが、これまでのところ、左、右、および下矢印キーを使用できます。

ここでコードを見ることができます。

http://jsfiddle.net/ShaShads/EWC5B/

ある種の配列とグリッドを使用することを考えましたが、それが機能するかどうかはよくわかりません。

var someArray = [];

次に、配列を使用してブロックを格納しますが、衝突検出についてはよくわかりません!

バンプにぶつかりましたが、レンガが一番下に到達したらレンガを画面にとどめ、その後のレンガの衝突を記憶してレンガを積み重ねることができるようにする方法がわかりませんか? 私はそこにたどり着くために私が研究できることについてのいくつかの指針を私にすべて答えてくれるように求めているわけではありません.

これは私の最初のゲームです。多くのエラーがある場合は、改善できるように教えてください。ありがとうございます。

4

1 に答える 1

0

画面下部

オブジェクトが画面の下部にあるかどうかをテストするには、簡単なテストです。

If obj.y >= (canvas.height - object.height) then don't increase obj y position.

ボックススタッキング

ボックスをスタックするには、各ループで、特定のボックスが別のボックスと衝突するかどうかを確認する必要があります。

for (var i=0; i<boxes.length; i++) {
    var boxA = boxes[i];

    for (var j=0; j<boxes.length; j++) {
        var boxB = boxes[j];

        if (boxA collides with boxB) don't increase boxA y position 
    }
}

これは非常に非効率的ですが、最初のゲームには十分であることに注意してください。より効率的な方法については、このリンクを試してください。


これがその背後にある理論です。これを行う方法?あなたがあなたの箱を管理する良い方法を持っているならば、あなたはあなたの人生をはるかに楽にすることができます。

たとえば、xとyの位置、および高さと幅を持つボックスオブジェクトを作成できます。ボックスがスタック/床にあるか、まだ動いているかを判断するために使用されるisMovingプロパティを指定することもできます。

このメソッドは、各ボックスオブジェクトがそれ自体の位置を追跡するため、「記憶」とほぼ同じです。

これらのボックスオブジェクトを配列に格納して、ボックスを簡単に反復できるようにします。

于 2013-02-21T23:28:23.243 に答える