Unity如何检查操作是否完成?

时间:2018-07-04 10:33:32

标签: c# unity3d

因此,从标题中可以看到,我需要检查Vector3.Slerp函数是否完成,因为在没有Vector3.Slerp完成的情况下,我没有代码进度。 (对不起,英语不好)

编辑:只是为了澄清一个问题:我正在使用协程执行一些Vector3.Slerp,并且我不希望它们全部一次工作,而是希望其中一个工作完成而另一个工作。

IEnumerator func()
{
    Vector3.Slerp(transform.position, targetPos1, Time.deltaTime * 8f);

    //Check if Vector3.Slerp is done

    Vector3.Slerp(transform.position, targetPos2, Time.deltaTime * 8f);

    //Check if Vector3.Slerp is done

    Vector3.Slerp(transform.position, targetPos3, Time.deltaTime * 8f);

    //Check if Vector3.Slerp is done

    Vector3.Slerp(transform.position, targetPos4, Time.deltaTime * 8f);

    //Check if Vector3.Slerp is done

    Vector3.Slerp(transform.position, targetPos5, Time.deltaTime * 8f);
}

1 个答案:

答案 0 :(得分:1)

我正在尝试理解您的问题...对不起,如果我听不懂。 尝试这样的事情:

bool active = false;

void Update(){    
    if(!active){
       startCoroutine(coroutine());
    }
}


IEnumerator coroutine()
 {
    active = true;
    //your code
    yield return new WaitForSeconds(2);
    active  = false;
 }

编辑:

IEnumerator func()
{
distance = 1;
while(distance > 0.1f){
    transform.position = Vector3.Slerp(transform.position, targetPos1, Time.deltaTime * 8f);
    distance = transform.position - targetPos1;
    if(distance<0){
        distance *=-1;
    }
}

distance = 1;
while(distance > 0.1f){
    transform.position = Vector3.Slerp(transform.position, targetPos2, Time.deltaTime * 8f);
    distance = transform.position - targetPos2;
    if(distance<0){
        distance *=-1;
    }
}

我没有尝试这段代码...只是为了让您理解这个想法。我现在没有时间,但这不是一个很好的代码...您可以做得更好