不知道在哪里等待团结



我试图为玩家制作一个射击脚本,并在弹药小于 1 时重新加载它,每当它发生时,我需要等待一下,然后让玩家再次射击,但我不知道怎么做。我尝试让变量 reload = 1 每次弹药小于 1 时,然后在一定秒后让重新加载变回 0。我知道如何做到这一点,所以如果重新加载等于 1,你就无法射击,但我不知道如何添加等待。

https://paste.ubuntu.com/p/qjNyXxTrj8/

最好使用协程重写代码,

void Start()
{
  StartCoroutine(ShootRoutine);
}
IEnumerator ShootRoutine()
{
 while (true) // newer exit this loop
 {
   if (!Input.GetButton ("Fire1")) yield return null; //not shooting, do nothing
   else
   {
    if (ammo>0)
    { 
       Shoot(); // move your ammo decrease here
       yield return new WaitForSeconds(delayBetweenShots); // cooldown after shot
    }
    if (ammo<=0)
    {
       DisableEffects();
       Reload();
       yield return new WaitForSeconds(reloadTime);
       EnableEffects();
    }
   }
  } // while(true) loops back here
}

此外,不需要 timer+=Time.deltaTime - 此值始终可用作 Time.time

在重新加载方法中,您可以启动一个协程,该协程在将变量变回原始值之前等待几秒钟reload

private IEnumerator WaitForFewSeconds()
{
  yield return new WaitForSeconds(2);
  reload = 0;
}
void Reload()
{
  // do your thing
  StartCoroutine(WaitForFewSeconds());
}

最新更新