示例#1
0
    void OnEnable()
    {
        mCam = cameraAttach != null ? cameraAttach : Camera.main;

        var attachPoint = AttachPoint.Get(attachPointName);

        if (attachPoint)
        {
            mAttachPoint = attachPoint.transform.position;
        }
        else
        {
            Debug.LogWarning("Unable to find attach point: " + attachPointName);
            mAttachPoint = Vector2.zero;
        }

        Update();
    }
示例#2
0
    IEnumerator DoVictory()
    {
        //wait for player to land
        while (!mMoveCtrl.isGrounded)
        {
            yield return(null);
        }

        yield return(null);

        DisablePhysics();

        float curT = 0f;

        //wait a bit
        while (curT < victoryToPortalWait)
        {
            //rotate
            Vector3 euler = transform.localEulerAngles;
            euler.z += victoryRotatePerSecond * Time.deltaTime;
            transform.eulerAngles = euler;

            curT += Time.deltaTime;
            yield return(null);
        }

        LoLManager.instance.PlaySound(soundExitPath, false, false);

        //move towards victory
        var destAttachPt = AttachPoint.Get(victoryAttachPoint);

        Vector2 start = transform.position;
        Vector2 end   = destAttachPt.transform.position;

        curT = 0f;

        float dist = (end - start).magnitude;

        if (dist > 0f)
        {
            float moveDelay = dist / victoryToPortalSpeed;

            while (curT < moveDelay)
            {
                //rotate
                Vector3 euler = transform.localEulerAngles;
                euler.z += victoryRotatePerSecond * Time.deltaTime;
                transform.eulerAngles = euler;

                //move
                transform.position = Vector2.Lerp(start, end, Mathf.Clamp01(curT / moveDelay));

                curT += Time.deltaTime;
                yield return(null);
            }

            transform.position = end;
        }

        //shrink
        curT = 0f;

        while (curT < victoryScaleOutDelay)
        {
            //rotate
            Vector3 euler = transform.localEulerAngles;
            euler.z += victoryRotatePerSecond * Time.deltaTime;
            transform.eulerAngles = euler;

            //scale
            transform.localScale = Vector3.Lerp(Vector3.one, Vector3.zero, Mathf.Clamp01(curT / victoryScaleOutDelay));

            curT += Time.deltaTime;
            yield return(null);
        }

        transform.localScale = Vector3.zero;
    }