Esempio n. 1
0
    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;
    }