IEnumerator TriggerDurationCorrupt(TimedCorruptMovement data) { data.objectToMove.SetActive(false); yield return(new WaitForSeconds(data.delay)); data.objectToMove.SetActive(true); data.isMoving = true; StartCoroutine(ResetCorruptDuration(data)); while (data.isMoving) { data.objectToMove.GetComponent <Rigidbody2D>().velocity = (data.velocity * Time.fixedDeltaTime); foreach (Transform t in data.objectToMove.transform) { if (t.GetComponent <Rigidbody2D>() != null) { t.GetComponent <Rigidbody2D>().velocity = (data.velocity * Time.fixedDeltaTime); } } yield return(null); } data.objectToMove.GetComponent <Rigidbody2D>().velocity = Vector2.zero; foreach (Transform t in data.objectToMove.transform) { if (t.GetComponent <Rigidbody2D>() != null) { t.GetComponent <Rigidbody2D>().velocity = Vector2.zero; } } for (; ;) { if (data.LerpZeroOnFinish) { data.objectToMove.transform.localScale = Vector2.Lerp(data.objectToMove.transform.localScale, Vector2.zero, Time.fixedDeltaTime); } yield return(null); } }
IEnumerator ResetCorruptDuration(TimedCorruptMovement data) { yield return(new WaitForSeconds(data.duration)); data.isMoving = false; }