我是一名新的程序员,制作了我的第一个非教程游戏,我在游戏中遇到了敌人的问题。继承剧本:
function drawEnemy() {
ctx.beginPath();
ctx.rect(enemyXPos-=1, downs-upw, enemyWidth, enemyHeight);
ctx.fillStyle="#ffffff";
ctx.fill();
ctx.closePath();
if (enemyXPos<0) {
startEnemy();
}
}
在移动敌人的路线上,每当敌人重生,它的速度变快,我不想要它。问题出在drawEnemy函数中:
.loc
答案 0 :(得分:1)
你的函数placeEnemy
形成一个无限循环,每次执行时调用自身(通过requestAnimationFrame
)。
startEnemy
都会调用placeEnemy
。这意味着每个&#34;重新产生&#34;开始一个新的无限循环,而不取消旧的循环。
placeEnemy
循环修改&#34;敌人&#34;通过减去每次迭代enemyXPos
来定位(1
)。通过同时运行多个循环,每次新的&#34;动画帧&#34;时,1
被多次减去。被解雇了。
您可以通过不调用placeEnemy
中的startEnemy
来解决此问题:只需重置敌人的位置,然后让相同的动画循环继续播放!