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(); }
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; }