所以我正在创造一个飞扬的鸟类游戏(如果你了解这个游戏是什么它会让你更容易理解我要说的话)并且在这个游戏中我有2个管道。其中一个管道位于最低y值(600px),一个管道从y值0开始。因此这些管道基本上具有相反的y值但是相同的X值(X值也会移动,但它们仍然是相同的值X)。管道的高度也是随机生成的。 问题从这里开始:我想要的代码是在经过多个tubeX像素之后(时间间隔也可以工作),我想添加另一组管道并对该值执行相同操作。但旧管道的价值必须保持不变。我认为某种类型的数组是最好的,但我的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;
}
这会创建两个彼此相对的管道:
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();
}
答案 0 :(得分:0)
我最终做的是在pipeX()函数中创建一个while循环。我还将tubeX的值更改为800,因此它可以在400 px时更有效地创建新管道。这可能不是最有效的方式,但它看起来不错!
function pipeX() {
var lastTime = 0;
velocityX += force;
velocityX *= 0.9;
tubeX += velocityX;
while (tubeX < -25) {
show();
if (tubeX = 400) {
new pipeY();
new show();
}
}
}