private IEnumerator ZoomIntroCoroutine() { float t = 0f; float x = 0; float xr = 0; transform.LookAt(player.transform); Quaternion r = transform.rotation; Vector3 initPos = transform.position; while (t < 1f) { t = Mathf.Clamp(t + (Time.deltaTime * (1f / 2f)), 0f, 1f); x = Easing.CrossFade(Easing.SmoothStart, 2, Easing.SmoothStop, 2, t); xr = Easing.Mix(Easing.SmoothStop, 2, Easing.SmoothStart, 4, 0.3f, t); transform.position = Vector3.Lerp(initPos, targetPosition, x); transform.rotation = Quaternion.Lerp(r, targetRotation, xr); yield return(null); } ControllerInput.instance.ControlEnable = EControlEnable.On; CameraManager.Instance.HandleZoomEnd(); Unblock(); _transitionRunning = false; StopAllCoroutines(); }
private IEnumerator TeleportCoroutine(Vector3 targetPos, Vector3 playerPos, float duration) { float t = 0f; teleportParticle.Emit(20); Vector3 newLensPos; Vector3 startPos = transform.position; float eTime; while (t < 1f) { t = Mathf.Clamp01(t + (Time.deltaTime * (1f / duration))); eTime = Easing.CrossFade(Easing.SmoothStart, 3, Easing.SmoothStop, 3, t); transform.position = Vector3.Lerp(startPos, targetPos, eTime); newLensPos = Vector3.Lerp(_lensTransform.position, transform.position, t); newLensPos.z = -5f; _lensTransform.position = newLensPos; _playerTrf.position = Vector3.Lerp(playerPos, targetPos, eTime); teleportParticle.transform.position = _playerTrf.position; yield return(null); } _yPosition = _playerTrf.position.y; _player.gameObject.SetActive(true); _teleport = false; }
private IEnumerator DisplayDrag(PointerFtueMove moveData) { int stepI = currentStepIndex; Vector3 pnjPos = Camera.main.WorldToScreenPoint(PlayerManager.Instance.GetNearestNPC().position); dragTarget.position = pnjPos; UIObjectPointer arrow = ArrowDisplayer.Instances("FtueTap").UseArrow <UIObjectPointer>(100f, -currentStep.pointRotation, false, clickTarget.transform as RectTransform, "FtueTap", false); arrow.SetAnimProperties(0f, 0f); float x = 0f; float t = 0f; while (currentStepIndex == stepI) { t = Mathf.Clamp(t + (Time.deltaTime * (1f / 1.2f)), 0f, 1f); x = Easing.CrossFade(Easing.SmoothStart, 3, Easing.SmoothStop, 3, t); clickTarget.transform.position = Vector3.Lerp(moveData.startTrf.position, dragTarget.position, x); if (t >= 1f) { t = 0f; } yield return(null); } ArrowDisplayer.Instances("FtueTap").DestroyArrow(arrow); }
private IEnumerator SnapYPosition(float yPosition) { float t = 0f; float prevY = transform.position.y; float yValue = yPosition - prevY; while (t < 1f) { t = Mathf.Clamp01(t + (Time.deltaTime * (1f / ySnapTime))); transform.position = new Vector3(transform.position.x, prevY + (yValue * Easing.CrossFade(Easing.SmoothStart, 2, Easing.SmoothStop, 2, t)), 0f); yield return(null); } }
protected IEnumerator TransitionCoroutine(ECameraTargetType targetView, Player targetPlayer) { ControllerInput.instance.ControlEnable = EControlEnable.Off; UIManager.instance.PNJState.Active(false); if (FtueManager.instance.active && targetView != mode) { Events.Instance.Raise(new OnInputFtuePinch()); } _transitionRunning = true; Block(); float t = 0; Vector3 basePosition = transform.position; Quaternion baseRotation = transform.rotation; CameraManager.Instance.TransformCameraTarget(targetPlayer.transform, out targetPosition, out targetRotation, targetView); while (t < 1) { switch (targetView) { case ECameraTargetType.MAP: if (mode == ECameraTargetType.MAP) { t += Time.deltaTime; if (t > 1) { t = 1; } float x = Easing.CrossFade(Easing.SmoothStart, 2, Easing.SmoothStop, 2, t); transform.position = Vector3.Slerp(basePosition, targetPosition, x); Reoriente(); yield return(null); } else { t += Time.deltaTime * (1f / SwitchPanel.TIME_TRANSITION); if (t > 1) { t = 1; } transform.position += (transform.position.normalized - transform.forward) * (Time.deltaTime / 4f); } break; case ECameraTargetType.ZOOM: t += Time.deltaTime * (1f / SwitchPanel.TIME_TRANSITION); if (t > 1) { t = 1; } transform.position -= transform.position.normalized * Time.deltaTime; break; default: break; } yield return(null); } _targetMode = targetView; if (targetView == mode) { ControllerInput.instance.ControlEnable = EControlEnable.On; player = targetPlayer; Events.Instance.Raise(new OnEndSwitchedPlayer()); Unblock(); _transitionRunning = false; StopAllCoroutines(); } else { if (FtueManager.instance.active) { Events.Instance.Raise(new OnEndFtuePinch()); } Events.Instance.AddListener <OnTransitionEnd>(FinishTransition); } }