public static Sequence CreateSequence(this Transform transform, Vector3 value, float duration = 0.05f, int vibrato = 2, float elasticity = 0.5f, int loop = 1, Ease ease = Ease.OutQuad, ESequenceType eSequenceType = ESequenceType.PunchScale, Action onStart = null, Action onError = null) { var sequence = DOTween.Sequence(); try { switch (eSequenceType) { case ESequenceType.Scale: sequence.Append(transform.DOScale(value, duration)).SetEase(ease); break; case ESequenceType.PunchScale: sequence.Append(transform.DOPunchScale(value, duration, vibrato, elasticity)).SetEase(ease); break; case ESequenceType.PunchPosition: sequence.Append(transform.DOPunchPosition(value, duration, vibrato, elasticity)).SetEase(ease); break; case ESequenceType.Move: sequence.Append(transform.DOMove(value, duration)).SetEase(ease); break; case ESequenceType.LocalMove: sequence.Append(transform.DOLocalMove(value, duration)).SetEase(ease); break; default: sequence.Append(transform.DOScale(value, duration)).SetEase(ease); break; } sequence.SetLoops(loop); sequence.SetRelative(false); sequence.OnPlay(() => { onStart?.Invoke(); }); } catch (Exception) { onError?.Invoke(); } return(sequence); }
private IEnumerator OnSequenceCompleted(List <SequencePipe> orderedPipes, ESequenceType sResult) { // count points, remove pipes from sequence long points = 0; int multiplyer = (int)sResult; for (int i = 1; i <= SIZE; ++i) { points += _sequence[i].Param * multiplyer; _sequence[i] = null; } // fly pipes to center and explode for (int i = 0; i < orderedPipes.Count; ++i) { orderedPipes[i].OnSequenceAnimation(SIZE - 1 - i); } yield return(new WaitForSeconds(Consts.PIPES_ON_SEQUENCE_ANIMATION_TIME)); // shake screen GameManager.Instance.Game.ShakeCamera(Consts.SHAKE_POWER_ON_SEQUENCE, Consts.SHAKE_POWER_ON_SEQUENCE, Consts.SHAKE_TIME_ON_SEQUENCE); // show popup with points GameObject popupObj = (GameObject)GameObject.Instantiate(SequenceCompletePopupPrefab, Vector3.zero, Quaternion.identity); popupObj.transform.SetParent(transform, false); popupObj.transform.localPosition = new Vector3(0, 52, 0); popupObj.GetComponent <Canvas>().overrideSorting = true; Transform textsContainer = popupObj.transform.Find("Container"); Text typeText = textsContainer.Find("Text0").GetComponent <Text>(); typeText.text = Localer.GetText(sResult.ToString()); Text pointsText = textsContainer.Find("Text1").GetComponent <Text>(); pointsText.text = Localer.GetText(points.ToString()); GameObject.Destroy(popupObj, 5.0f); // add points GameManager.Instance.Game.AddPointsForSequence(points); // yield return(null); }
public static Sequence CreateSequence(this Image image, float value, float duration = 0.5f, int loop = 1, Ease ease = Ease.Linear, ESequenceType eSequenceType = ESequenceType.Fade, Action onStart = null, Action onError = null) { var sequence = DOTween.Sequence(); try { // ReSharper disable once SwitchStatementMissingSomeCases switch (eSequenceType) { case ESequenceType.Fade: sequence.Append(image.DOFade(value, duration)).SetEase(ease); break; case ESequenceType.FillAmount: sequence.Append(image.DOFillAmount(value, duration)).SetEase(ease); break; } sequence.SetLoops(loop); sequence.SetRelative(false); sequence.OnPlay(() => { onStart?.Invoke(); }); } catch (Exception) { onError?.Invoke(); } return(sequence); }