每次有人得分时,我怎样才能让游戏停止一段时间,而不是匆忙回到游戏中?

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 而不执行它?

当有人试图踢高级管理员或他自己时,我怎样才能让机器人说些啥?

Roblox:我怎样才能让这个脚本正常工作?

C++ 如果我对一个向量进行排序,我怎样才能让另一个向量与该向量对齐? [复制]

每次我运行 pyinstaller 可执行文件时,pyngrok 都会下载 ngrok。我怎样才能让它只下载一次ngrok?