private IEnumerator Deflate(Vector3 piercePosition, float deflatingTime, float deflatingDelay) { localState = BalloonLifecycle.Deflating; float startTime = Time.time; bool trigerredNeighbours = false; while (Time.time - startTime < deflatingTime) { if (!trigerredNeighbours && Time.time - startTime > deflatingDelay) { if (next != null) { next.Pierce(transform.position, deflatingTime, deflatingDelay); } if (previous != null) { previous.Pierce(transform.position, deflatingTime, deflatingDelay); } trigerredNeighbours = true; } float lerp = (Time.time - startTime) / deflatingTime; Vector3 force = (transform.position - piercePosition).normalized * (1f - lerp) * parent.ForceMultiplier; parent.AddForceAtPosition(force, transform.position); transform.localScale = Vector3.one * (1f - lerp); yield return(new WaitForEndOfFrame()); } transform.localScale = Vector3.zero; }