因此,从标题中可以看到,我需要检查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);
}
答案 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;
}
}
我没有尝试这段代码...只是为了让您理解这个想法。我现在没有时间,但这不是一个很好的代码...您可以做得更好