每次有人得分时,我怎样才能让游戏停止一段时间,而不是匆忙回到游戏中?
Posted
技术标签:
【中文标题】每次有人得分时,我怎样才能让游戏停止一段时间,而不是匆忙回到游戏中?【英文标题】:How can I make the game stops for a while everytime someone scores, instead of rhush back to the game? 【发布时间】:2022-01-23 12:36:24 【问题描述】:我正在开发一款游戏来练习我的技能。每当有人得分时,游戏就会很快重新开始,我希望它在返回之前给它一点时间。主函数如下所示:
function drawGame()
background(); //does the background
drawChar();
drawEnemy();
drawBall();
changeMovement();
playerControls();
enemyFollowsBall();
enemyChangePosition();
checkBallCollision();
drawScore();
//if(pointScored())
//setInterval(drawGame, 1000);
//
setTimeout(drawGame, 1);
该函数通过管理游戏动画的 setTimeOut 不断被调用。我试图用注释掉的代码来解决我的问题(我设置了 pointScore(),它增加了分数并进行了一些重置,以返回 true),但它没有按我的预期工作。怎样才能达到预期的效果?
【问题讨论】:
drawGame
由于 1 毫秒的超时而被立即有效地再次调用。您是否尝试过增加超时时间?
@GhassenLouhaichi 是的,谢谢,但这也会让游戏变慢,这是不受欢迎的
那我们需要看看drawScore
。我认为这是应该在玩家得分后等待一段时间的功能。
【参考方案1】:
当您不将 setTimeout(drawGame, 1);
移到 else 语句中或在后面添加 return 时,您仍然会调用它。
function drawGame()
background(); //does the background
drawChar();
drawEnemy();
drawBall();
changeMovement();
playerControls();
enemyFollowsBall();
enemyChangePosition();
checkBallCollision();
drawScore();
if (pointScored())
setInterval(drawGame, 5000);
return; // either this
else // or adding the else here
setTimeout(drawGame, 1);
【讨论】:
以上是关于每次有人得分时,我怎样才能让游戏停止一段时间,而不是匆忙回到游戏中?的主要内容,如果未能解决你的问题,请参考以下文章
我怎样才能让 NHibernate 只生成 SQL 而不执行它?
当有人试图踢高级管理员或他自己时,我怎样才能让机器人说些啥?
C++ 如果我对一个向量进行排序,我怎样才能让另一个向量与该向量对齐? [复制]
每次我运行 pyinstaller 可执行文件时,pyngrok 都会下载 ngrok。我怎样才能让它只下载一次ngrok?