- Home /
In coroutin function,if(x) { yield return a } . if(y) { yield return b }. Is it possible?
Hi, I'm learning coroutine and I have a problem. I want to check whether my coroutine method is complete or not. So I wrote this:
IEnumerator ChangePositionBetweenLines(float targetPosition)
{
if (transform.position.y > targetPosition)
{
for (float f = 2f; transform.position.y - f * Time.deltaTime >= targetPosition - f * Time.deltaTime; )
{
ChangeMotorKinematic(true);
transform.position = new Vector3(transform.position.x, transform.position.y - f * Time.deltaTime, transform.position.z);
if (transform.position.y >= targetPosition)
yield return null;
}
if (!(transform.position.y - 2 * Time.deltaTime >= targetPosition))
{
isChangePositionBetweenLinesFinished = true;
yield return (isChangePositionBetweenLinesFinished);
}
}
else if (transform.position.y < targetPosition)
{
for (float f = 2f; transform.position.y + f * Time.deltaTime <= targetPosition + f * Time.deltaTime; )
{
ChangeMotorKinematic(true);
transform.position = new Vector3(transform.position.x, transform.position.y + f * Time.deltaTime, transform.position.z);
if (transform.position.y <= targetPosition)
yield return null;
}
if (!(transform.position.y + 2 * Time.deltaTime <= targetPosition))
{
isChangePositionBetweenLinesFinished = true;
yield return (isChangePositionBetweenLinesFinished);
}
}
}
Here I want to know when "while" is finished by "isChangePositionBetweenLinesFinished = true" and then I do something else. but when the "while" is incorrect, the object do nothing and "isChangePositionBetweenLinesFinished " is never "true".
please help me! I'm confused! Thanks in advance
Comment