C# 如何在C中检查球员低于y坐标的时间#

C# 如何在C中检查球员低于y坐标的时间#,c#,unity3d,if-statement,while-loop,C#,Unity3d,If Statement,While Loop,我想让我的脚本检查玩家在给定的y坐标下有多长时间。但是,由于我正在检查fixeupdatevoid中的信息,因此无法直接添加while循环。因此,我尝试了以下方法: void FixedUpdate() { if(rb.position.y < 1f) { checkIfLost(); } } IEnumerator checkIfLost() { while(rb.position.y < 1f)

我想让我的脚本检查玩家在给定的y坐标下有多长时间。但是,由于我正在检查fixeupdatevoid中的信息,因此无法直接添加while循环。因此,我尝试了以下方法:

void FixedUpdate()
{
if(rb.position.y < 1f)
        {
            checkIfLost();
        }
}

IEnumerator checkIfLost()
    {
        while(rb.position.y < 1f)
        {
            float timeGiven = 5 - Time.deltaTime;

            if(timeGiven <= 0)
            {
                FindObjectOfType<GameManager>().EndGame();
            }

            yield return null;
        }
    }
void FixedUpdate()
{
if(径向位置y<1f)
{
checkIfLost();
}
}
IEnumerator checkIfLost()
{
同时(rb.位置y<1f)
{
float timeGiven=5-Time.deltaTime;

如果(timeGiven只需将浮点变量设置为计数器

private float timer = 0f;

void FixedUpdate()
{
     if(rb.position.y < 1f)
     {
            timer +=Time.fixedDeltaTime;
            if (timer > 5f)
            {
                //do something
                FindObjectOfType<GameManager>().EndGame();
            }
     }
     else
     {
          timer = 0f;
     }
}
private float timer=0f;
void FixedUpdate()
{
if(径向位置y<1f)
{
计时器+=Time.fixedDelatime;
如果(计时器>5f)
{
//做点什么
FindObjectOfType().EndGame();
}
}
其他的
{
定时器=0f;
}
}

如果您想在更新中这样做(更好)只需替换<代码>定时器+= time .DeltTime;

听起来像你在Y和屏幕底部之间有一个分离盒,然后做一个CyRebug检查。这不是你如何启动一个协同程序,我建议看一下它的文档,也考虑存储你的GAMEMANER而不是找到它的每一个循环。是否有一个你需要T的原因?his在FixedUpdate中?如果您只是对其进行计时,更新应该可以,特别是因为FixedUpdate可以在一帧中运行多次。您可以拥有所有更新;FixedUpdate、Update、LateUpdate…我最关心的是,FixedUpdate可以在每帧中运行多次,所以我很好奇为什么他们需要在FixedUpdate中运行它…向您学习r错误…只有少数人阅读了这本书或观看了教程视频不知道为什么你的答案被否决了,但它确实回答了这个问题。哇,我很抱歉我在这上面浪费了你的时间。它太简单了,但我想不起来。太感谢了!!我想这是漫长的一天。我还将它改为Update()而不是FixedUpdate().如果你高兴,你就别浪费我的时间了欢迎…禁闭的最后一天,也别忘了投票。。