for (i = 0; i < myObstacles.length; i += 1) {
myObstacles[i].x += -10;
myObstacles[i].update();
if (myGameArea.frameNo >= 100 >= everyinterval(100)) {
myObstacles[i].x += -5
myObstacles[i].update();
}
}
function everyinterval(n) {
if ((myGameArea.frameNo / n) % 1 == 0) {
return true;
}
return false;
}
在这种情况下,“ myGameArea.frameNo”是游戏的得分,而“ myObstacless”是障碍的速度。我想做的是,每达到100分,障碍就会增加-5速度。因此,在0-99时,速度将为-10,在100-199时,速度将为-15,依此类推。我很困惑,谢谢您的时间和帮助
我可以代替
if (myGameArea.frameNo >= 100) {
myObstacles[i].x += -5
myObstacles[i].update();
}
if (myGameArea.frameNo >= 200) {
myObstacles[i].x += -5
myObstacles[i].update();
}
if (myGameArea.frameNo >= 300) {
myObstacles[i].x += -5
myObstacles[i].update();
}
我想要的是更快地完成每一行的方法
答案 0 :(得分:1)
var start_speed = 5, // default speed
speed = start_speed;
// constantly re-calculate the sceed accodring to the score, on every frame:
speed = start_speed + Math.floor(score/100) * 5;
// on score below '100' speed will be 5 + 0
// on score '100' speed will be 5 + 5
// on score '200' speed will be 5 + 10
您可以修改数学以输出所需的速度更新
答案 1 :(得分:0)
您可以尝试使用此方法,而不要使用if
速度+ =-5 *(1+分数/ 100);
示例:
所以 <100
-5 *(1 + 99/100)=-5 *(1 + 0)=-5
得分为103时
-5 *(1 + 103/100)=-5 *(1 + 1)=-10
希望有帮助
答案 2 :(得分:0)
这似乎是使用modulo operator的一个很好的例子。您可以按以下方式实现请求的行为:
for (let i = 0; i < myObstacles.length; ++i) {
if (myGameArea.frameNo[i] % 100 == 0) {
myObstacles[i].x += 5;
myObstacles[i].update();
}
}