だから私はフラッディーな鳥のゲームを作成しています(このゲームが何であるか分かっていると、私の言うことを理解するのがずっと簡単になります)。パイプの1つは最低y値(600px)にあり、1つはay値0で始まります。したがって、これらのパイプは基本的に反対のy値を持ちますが、同じX値を持ちます(X値も移動しますが、 Xの)。パイプの高さもランダムに生成されます。 ここから始めて質問:私はこのコードのためにチューブXのピクセル数を移動した後(時間間隔も機能する可能性があります)、別のパイプセットを追加してその値を同じにします。しかし、古いパイプの価値は同じままでなければなりません。私はいくつかの並べ替えの配列が最高だと思うが、私のJavaScriptコード作成能力はかなり低く、私はそれを見るまで私のコードにそのようなものを実装する手掛かりを持っていないだろう。関数を何度も呼び出すことはできますが、以前の値をリセットすることはできませんか?
コードのこのビットはランダムな高さを生成する:
function pipeY() {
var top = Math.random() * -32 + 1;
height1 = top * 10;
var bottom = Math.random() * 32 + 1;
height2 = bottom *10
loop();
}
これは、パイプの移動X値を作成:
tubeX = 400;
velocityX = 0;
force = -0.5;
function pipeX() {
velocityX += force;
velocityX *= 0.9;
tubeX += velocityX;
}
これは、互いに逆である2本のパイプ作成:
をfunction show() {
var tubeHeight1 = 600;
var tubeHeight2 = 0;
ctx.fillStyle="green";
tube1 = ctx.fillRect(tubeX,tubeHeight1,5,height1);
tube2 = ctx.fillRect(tubeX,tubeHeight2,5,height2);
ctx.stroke();
}
あなたは 'pipeX + = velocityX'を実行するときに、そのインスタンス*に影響を与えているだけなので、パイプのインスタンスを別にする必要があります。次のパイプには 'tubeX'という独自の値があります。 – Jamiec
私はいくつかのコードで実験していたとき、パイプがn個のピクセルの後に積み重なっているのを見ましたが、私は確信していませんでした。 –
ヘルプが必要な場合は[mcve]を入力してください。 – Jamiec