Unity Как проверить, сделана ли операция? - PullRequest
0 голосов
/ 04 июля 2018

Итак, как вы можете видеть из заголовка, мне нужно проверить, выполнена ли моя функция 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 голосов
/ 04 июля 2018

Я пытаюсь понять твой вопрос ... извини, если не понял. Попробуйте что-то вроде этого:

bool active = false;

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


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

EDIT:

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;
    }
}

Я не пробовал этот код ... просто чтобы вы поняли идею. У меня сейчас нет времени, но это не очень хороший код ... Вы можете сделать намного лучше

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...