public void DeactivateTarget() { if (IsActive) { InactiveTimer = 0; } IsActive = false; Vector3Animator scaleAnimator = gameObject.GetOrAdd <Vector3Animator>(); RectTransform rts = GetComponent <RectTransform>(); Vector3AnimationData scaleData = new Vector3AnimationData { StartValue = Vector3.one * 1.5f, EndValue = Vector3.one * 0.01f, Duration = 0.4f, EaseType = EaseType.EaseOutSin, Target = gameObject, OnStart = (s, o) => rts.localScale = s, OnUpdate = (s, t, o) => rts.localScale = s, OnEnd = (s, o) => { rts.localScale = s; image.enabled = false; } }; scaleAnimator.StartAnimation(scaleData); }
/* * private IEnumerator ShowBubbleImpl() { * yield return new WaitForSeconds(0.2f); * Vector3AnimationData bubbleData = bubbleTransform.ConstructScaleAnimationData(new Vector3(0, 0, 1), * Vector3.one, 0.15f, BosAnimationMode.Single, EaseType.EaseInOutQuad, () => { * StartCoroutine(ShowBubbleTextImpl()); * }); * bubbleTransform.gameObject.GetOrAdd<Vector3Animator>().StartAnimation(bubbleData); * } * * private IEnumerator ShowBubbleTextImpl() { * yield return new WaitForSeconds(.1f); * textTransform.GetComponent<Text>().text = GetText(currentTextIndex) ; * Vector3AnimationData textData = textTransform.ConstructScaleAnimationData(new Vector3(1, 0, 1), Vector3.one, * 0.1f, BosAnimationMode.Single, EaseType.EaseInOutQuad, () => { * StartCoroutine(ShowOkButtonImpl()); * //AnimateTextScroll(); * }); * textTransform.gameObject.GetOrAdd<Vector3Animator>().StartAnimation(textData); * }*/ private IEnumerator ShowOkButtonImpl() { yield return(new WaitForSeconds(.2f)); Vector3AnimationData buttonData = okButtonTransform.ConstructScaleAnimationData(new Vector3(0, 0, 1), Vector3.one, 0.1f, BosAnimationMode.Single, EaseType.EaseInOutQuad, () => { var button = okButtonTransform.GetComponent <Button>(); button.interactable = true; button.SetListener(() => { if (HasNextText) { currentTextIndex++; textTransform.GetComponent <Text>().text = GetText(currentTextIndex); //AnimateTextScroll(); UpdateButtonView(); } else { Services.ViewService.Remove(ViewType.TutorialDialogView); Services.SoundService.PlayOneShot(SoundName.click); Data?.OnOk?.Invoke(); } }); }); okButtonTransform.gameObject.GetOrAdd <Vector3Animator>().StartAnimation(buttonData); }
private void AnimateScoreText() { var animator = scoreText.gameObject.GetOrAdd <Vector3Animator>(); RectTransform rect = scoreText.GetComponent <RectTransform>(); var secondScale = new Vector3AnimationData { StartValue = 1.5f * Vector3.one, EndValue = Vector3.one, Duration = 0.5f, AnimationMode = BosAnimationMode.Single, EaseType = EaseType.EaseInOutQuad, OnStart = (s, o) => rect.localScale = s, OnUpdate = (s, t, o) => rect.localScale = s, OnEnd = (s, o) => rect.localScale = s, Target = rect.gameObject }; var firstScale = new Vector3AnimationData { StartValue = Vector3.one, EndValue = 1.5f * Vector3.one, Duration = 0.5f, AnimationMode = BosAnimationMode.Single, EaseType = EaseType.EaseInOutQuad, OnStart = (s, o) => rect.localScale = s, OnUpdate = (s, t, o) => rect.localScale = s, OnEnd = (s, o) => { rect.localScale = s; animator.StartAnimation(secondScale); }, Target = rect.gameObject }; animator.StartAnimation(firstScale); }
public void ActivateTarget() { if (!IsActive) { image.enabled = true; IsActive = true; Vector3Animator scaleAnimator = gameObject.GetOrAdd <Vector3Animator>(); RectTransform rts = GetComponent <RectTransform>(); Vector3AnimationData scaleData = new Vector3AnimationData { StartValue = Vector3.one, EndValue = Vector3.one * 3, Duration = 0.25f, EaseType = EaseType.EaseOutSin, Target = gameObject, OnStart = (s, o) => rts.localScale = s, OnUpdate = (s, t, o) => rts.localScale = s, OnEnd = (s, o) => { rts.localScale = s; Vector3AnimationData scale2Data = new Vector3AnimationData { StartValue = Vector3.one * 3, EndValue = Vector3.one, Duration = 0.25f, EaseType = EaseType.EaseInOutSin, Target = gameObject, OnStart = (s2, o2) => rts.localScale = s2, OnUpdate = (s2, t2, o2) => rts.localScale = s2, OnEnd = (s2, o2) => rts.localScale = s2 }; scaleAnimator.StartAnimation(scale2Data); } }; scaleAnimator.StartAnimation(scaleData); } }
private IEnumerator MoveInPlaceImpl(MechanicAnimObject mechanicView, TempMechanicInfo info) { yield return(new WaitForSeconds(.2f)); Vector3Animator scaleAnimator = mechanicView.gameObject.GetOrAdd <Vector3Animator>(); Vector2Animator positionAnimator = mechanicView.gameObject.GetOrAdd <Vector2Animator>(); FloatAnimator rotateAnimator = mechanicView.gameObject.GetOrAdd <FloatAnimator>(); RectTransform rectTransform = mechanicView.GetComponent <RectTransform>(); Vector2 startPosition = rectTransform.anchoredPosition; Vector2 endPosition = mechanicView.leftPosition; Vector2AnimationData positionData = new Vector2AnimationData { StartValue = startPosition, EndValue = endPosition, Duration = .3f, EaseType = EaseType.EaseInOutQuad, Target = mechanicView.gameObject, OnStart = rectTransform.UpdatePositionFunctor(), OnUpdate = rectTransform.UpdatePositionTimedFunctor(), OnEnd = rectTransform.UpdatePositionFunctor(() => { Debug.Log($"setup temp mechanic on state => {info.State}"); mechanicView.Setup(info); mechanicViews.Add(mechanicView.TempMechanic.Id, mechanicView); animatedViews.Remove(mechanicView.TempMechanic.Id); }) }; Vector3AnimationData scaleData = new Vector3AnimationData { StartValue = 2f * Vector3.one, EndValue = Vector3.one, Duration = .3f, EaseType = EaseType.EaseInOutQuad, Target = mechanicView.gameObject, OnStart = rectTransform.UpdateScaleFunctor(), OnUpdate = rectTransform.UpdateScaleTimedFunctor(), OnEnd = rectTransform.UpdateScaleFunctor() }; FloatAnimationData rotateData = new FloatAnimationData { StartValue = rectTransform.localRotation.eulerAngles.z, EndValue = 0, Duration = .3f, EaseType = EaseType.EaseInOutQuad, Target = mechanicView.gameObject, OnStart = rectTransform.UpdateZRotation(), OnUpdate = rectTransform.UpdateZRotationTimed(), OnEnd = rectTransform.UpdateZRotation() }; positionAnimator.StartAnimation(positionData); scaleAnimator.StartAnimation(scaleData); rotateAnimator.StartAnimation(rotateData); }
private IEnumerator StartWaveImpl() { yield return(new WaitUntil(() => IsAvailable)); rectTransform.localScale = Vector3.one; image.color = Color.white; image.enabled = true; isScaleCompleted = false; isColorCompleted = false; IsAvailable = false; var scaleData = new Vector3AnimationData { StartValue = Vector3.one, EndValue = endScale * Vector3.one, AnimationMode = BosAnimationMode.Single, Duration = interval, EaseType = EaseType.EaseInOutQuad, Target = rectTransform.gameObject, OnStart = (s, o) => { rectTransform.localScale = s; }, OnUpdate = (s, t, o) => { rectTransform.localScale = s; }, OnEnd = (s, o) => { rectTransform.localScale = s; isScaleCompleted = true; }, Events = new List <AnimationEvent <Vector3> > { new AnimationEvent <Vector3>() { Mode = AnimationEventMode.Single, IsValid = (s, t, o) => t >= 0.5f, OnEvent = (s, t, o) => { var colorData = new ColorAnimationData { StartValue = Color.white, EndValue = Color.white.ChangeAlpha(0), AnimationMode = BosAnimationMode.Single, Duration = interval * (1f - t), EaseType = EaseType.EaseInOutQuad, Target = image.gameObject, OnStart = image.UpdateColorFunctor(), OnUpdate = image.UpdateColorTimedFunctor(), OnEnd = image.UpdateColorFunctor(() => { isColorCompleted = true; StartCoroutine(EndWaveImpl()); }) }; colorAnimator.StartAnimation(colorData); } } } }; scaleAnimator.StartAnimation(scaleData); }
private void SpawnCoinObject(int coin) { GameObject coinObject = Instantiate <GameObject>(coinPrefab); var coinView = coinObject.GetComponent <SplitLinerCoin>(); coinView.CoinText.text = $"+{coin}"; RectTransform coinRectTransform = coinObject.GetComponent <RectTransform>(); coinRectTransform.SetParent(canvasTransform, false); coinRectTransform.anchoredPosition = Services?.ViewService.Utils.WorldPosToCanvasPos(Camera.main, canvas, playerTransform.position) ?? Vector2.zero; FloatAnimator floatAnimator = coinObject.GetComponent <FloatAnimator>(); Vector3Animator vec3Animator = coinObject.GetComponent <Vector3Animator>(); CanvasGroup canvasGroup = coinObject.GetComponent <CanvasGroup>(); FloatAnimationData alphaAnimData = new FloatAnimationData { StartValue = 1, EndValue = 0, Duration = 0.4f, AnimationMode = BosAnimationMode.Single, EaseType = EaseType.EaseInOutQuad, Target = coinObject, OnStart = (v, o) => canvasGroup.alpha = v, OnUpdate = (v, t, o) => canvasGroup.alpha = v, OnEnd = (v, o) => { canvasGroup.alpha = v; Destroy(coinObject); } }; Vector3AnimationData scaleAnimData = new Vector3AnimationData { StartValue = Vector3.one, EndValue = 1.4f * Vector3.one, Duration = 0.3f, AnimationMode = BosAnimationMode.Single, EaseType = EaseType.EaseInOutQuad, Target = coinObject, OnStart = (s, o) => coinRectTransform.localScale = s, OnUpdate = (s, t, o) => coinRectTransform.localScale = s, OnEnd = (s, o) => { coinRectTransform.localScale = s; floatAnimator.StartAnimation(alphaAnimData); } }; vec3Animator.StartAnimation(scaleAnimData); }
private void SpawnPercentText(int count) { GameObject textInstance = Instantiate <GameObject>(percentPrefab); RectTransform textRectTransform = textInstance.GetComponent <RectTransform>(); textRectTransform.SetParent(canvasTransform, false); textRectTransform.anchoredPosition = Services?.ViewService.Utils.WorldPosToCanvasPos(Camera.main, canvas, playerTransform.position) ?? Vector2.zero; TMPro.TextMeshProUGUI txt = textRectTransform.GetComponent <TMPro.TextMeshProUGUI>(); txt.text = $"+{count}%"; FloatAnimator floatAnimator = txt.GetComponent <FloatAnimator>(); Vector3Animator vec3Animator = txt.GetComponent <Vector3Animator>(); FloatAnimationData alphaAnimData = new FloatAnimationData { StartValue = 1, EndValue = 0, Duration = 0.4f, AnimationMode = BosAnimationMode.Single, EaseType = EaseType.EaseInOutQuad, Target = textRectTransform.gameObject, OnStart = (a, o) => { txt.color = new Color(txt.color.r, txt.color.g, txt.color.b, a); }, OnUpdate = (a, t, o) => txt.color = new Color(txt.color.r, txt.color.g, txt.color.b, a), OnEnd = (a, o) => { txt.color = new Color(txt.color.r, txt.color.g, txt.color.b, a); Destroy(textRectTransform.gameObject); } }; Vector3AnimationData scaleAnimData = new Vector3AnimationData { StartValue = Vector3.one, EndValue = 1.4f * Vector3.one, Duration = 0.3f, AnimationMode = BosAnimationMode.Single, EaseType = EaseType.EaseInOutQuad, Target = textRectTransform.gameObject, OnStart = (s, o) => textRectTransform.localScale = s, OnUpdate = (s, t, o) => textRectTransform.localScale = s, OnEnd = (s, o) => { textRectTransform.localScale = s; floatAnimator.StartAnimation(alphaAnimData); } }; vec3Animator.StartAnimation(scaleAnimData); }
private void TryCompleteEvents(int index, Vector3 value, float normTimer, Vector3AnimationData data) { List <AnimationEventInfo <Vector3> > dataEvents = events[index]; foreach (AnimationEventInfo <Vector3> evt in dataEvents) { if ((evt.Event.Mode == AnimationEventMode.Single && !evt.IsCompleted) || (evt.Event.Mode == AnimationEventMode.Multiple)) { if (evt.Event.IsValid?.Invoke(value, normTimer, data.Target) ?? false) { evt.Event.OnEvent?.Invoke(value, normTimer, data.Target); evt.IsCompleted = true; } } } }
public void Setup(HistoryEntry entry) { this.Data = entry; var planetNameData = Services.ResourceService.PlanetNameRepository.GetPlanetNameData(entry.PlanetId); backImage.overrideSprite = Services.ResourceService.GetSprite(planetNameData.history_back); nameText.text = Services.ResourceService.Localization.GetString(planetNameData.name); planetIcon.overrideSprite = Services.ResourceService.GetSprite(planetNameData.ui_icon); countText.text = BosUtils.GetCurrencyString(entry.Securities.ToCurrencyNumber()); trigger.SetListener(() => { Vector3AnimationData data1 = new Vector3AnimationData { AnimationMode = BosAnimationMode.Single, Duration = 0.3f, EaseType = EaseType.EaseInOutQuad, StartValue = Vector3.one, EndValue = new Vector3(1, 1.15f, 1), Target = backImage.gameObject, OnStart = (s, go) => BackImageRectTransform.localScale = s, OnUpdate = (s, t, go) => BackImageRectTransform.localScale = s, OnEnd = (s, go) => { BackImageRectTransform.localScale = s; Vector3AnimationData data2 = new Vector3AnimationData { AnimationMode = BosAnimationMode.Single, Duration = 0.3f, EaseType = EaseType.EaseInOutQuad, Target = backImage.gameObject, StartValue = new Vector3(1, 1.15f, 1), EndValue = Vector3.one, OnStart = (s2, go2) => BackImageRectTransform.localScale = s2, OnUpdate = (s2, t2, go2) => BackImageRectTransform.localScale = s2, OnEnd = (s2, go2) => BackImageRectTransform.localScale = s2 }; backImage.gameObject.GetOrAdd <Vector3Animator>().StartAnimation(data2); } }; backImage.gameObject.GetOrAdd <Vector3Animator>().StartAnimation(data1); }); }
public static void CreateWorkEffect(Transform mechanic, GameObject effectPrefab) { GameObject inst = Instantiate <GameObject>(effectPrefab); RectTransform effectRect = inst.GetComponent <RectTransform>(); effectRect.SetParent(mechanic.parent, false); effectRect.anchoredPosition = mechanic.GetComponent <RectTransform>().anchoredPosition + new Vector2(0, 120); var colorData = AnimUtils.GetColorAnimData(Color.white, Color.white.ChangeAlpha(0), 2, EaseType.EaseInOutQuad, effectRect); var scaleData = new Vector3AnimationData { StartValue = Vector3.one, EndValue = Vector3.one * 0.2f, Duration = 2, EaseType = EaseType.EaseInOutQuad, Target = inst, OnStart = effectRect.UpdateScaleFunctor(), OnUpdate = effectRect.UpdateScaleTimedFunctor(), OnEnd = effectRect.UpdateScaleFunctor() }; var posData = new Vector2AnimationData { StartValue = effectRect.anchoredPosition, EndValue = effectRect.anchoredPosition + new Vector2(0, 250), Duration = 2, EaseType = EaseType.EaseInOutQuad, OnStart = effectRect.UpdatePositionFunctor(), OnUpdate = effectRect.UpdatePositionTimedFunctor(), OnEnd = effectRect.UpdatePositionFunctor() }; inst.GetOrAdd <ColorAnimator>().StartAnimation(colorData); inst.GetOrAdd <Vector3Animator>().StartAnimation(scaleData); inst.GetOrAdd <Vector2Animator>().StartAnimation(posData); Destroy(inst, 2); }
private void PrepareAnimationObject(GameObject obj) { RectTransform trs = obj.GetComponent <RectTransform>(); Image image = obj.GetComponent <Image>(); Vector3Animator scaleAnimator = obj.GetComponent <Vector3Animator>(); ColorAnimator colorAnimator = obj.GetComponent <ColorAnimator>(); BezierMover mover = obj.GetComponent <BezierMover>(); RectTransformPositionObject positionObject = obj.GetComponent <RectTransformPositionObject>(); Vector3AnimationData scaleData = new Vector3AnimationData() { AnimationMode = BosAnimationMode.Single, Duration = interval * 0.5f, EaseType = EaseType.EaseInOutQuad, EndValue = Vector3.one * 1.25f, Events = null, StartValue = Vector3.one, Target = obj, OnStart = (s, o) => trs.localScale = s, OnUpdate = (s, t, o) => trs.localScale = s, OnEnd = (s, o) => { trs.localScale = s; Vector3AnimationData scale2Data = new Vector3AnimationData() { StartValue = Vector3.one * 1.25f, EndValue = Vector3.one, Duration = interval * 0.5f, EaseType = EaseType.EaseInOutQuad, Target = obj, OnStart = (s2, o2) => trs.localScale = s2, OnUpdate = (s2, t2, o2) => trs.localScale = s2, OnEnd = (s2, o2) => trs.localScale = s2 }; scaleAnimator.StartAnimation(scale2Data); ColorAnimationData colorData = new ColorAnimationData() { StartValue = Color.white, EndValue = new Color(1, 1, 1, 0.2f), Duration = interval * 0.5f, EaseType = EaseType.EaseInOutQuad, Target = obj, OnStart = (c2, o2) => image.color = c2, OnUpdate = (c2, t2, o2) => image.color = c2, OnEnd = (c2, o2) => image.color = c2 }; colorAnimator.StartAnimation(colorData); } }; scaleAnimator.StartAnimation(scaleData); var bezierData = AnimUtils.GetBizerQuadData(positionObject, startObject.anchoredPosition, endObject.anchoredPosition, interval * 1.1f, (go) => Destroy(go), linerFactor, orthoFactor); mover.Setup(bezierData); }
private void AnimateAuditorObject(SecretaryAnimObject mechanicView, Auditor info) { Vector3Animator scaleAnimator = mechanicView.gameObject.GetOrAdd <Vector3Animator>(); Vector2Animator positionAnimator = mechanicView.gameObject.GetOrAdd <Vector2Animator>(); ColorAnimator colorAnimator = mechanicView.gameObject.GetOrAdd <ColorAnimator>(); FloatAnimator rotateAnimator = mechanicView.gameObject.GetOrAdd <FloatAnimator>(); RectTransform rectTransform = mechanicView.GetComponent <RectTransform>(); Image image = mechanicView.GetComponent <Image>(); Vector2 endOffset = Random.insideUnitCircle.normalized * 300; if (endOffset.y < 0) { endOffset.y = -endOffset.y; } Vector2 startPosition = buyButton.GetComponent <RectTransform>().anchoredPosition; Vector2 endPosition = startPosition + endOffset; Vector2AnimationData positionData = new Vector2AnimationData { StartValue = startPosition, EndValue = endPosition, Duration = 0.3f, EaseType = EaseType.EaseInOutQuad, Target = mechanicView.gameObject, OnStart = rectTransform.UpdatePositionFunctor(), OnUpdate = rectTransform.UpdatePositionTimedFunctor(), OnEnd = rectTransform.UpdatePositionFunctor(() => { StartCoroutine(MoveInPlaceImpl(mechanicView, info)); }) }; Vector3AnimationData scaleData = new Vector3AnimationData { StartValue = Vector3.one, EndValue = 2f * Vector3.one, Duration = .3f, EaseType = EaseType.EaseInOutQuad, Target = mechanicView.gameObject, OnStart = rectTransform.UpdateScaleFunctor(), OnUpdate = rectTransform.UpdateScaleTimedFunctor(), OnEnd = rectTransform.UpdateScaleFunctor() }; ColorAnimationData colorData = new ColorAnimationData { StartValue = new Color(1, 1, 1, 0), EndValue = new Color(1, 1, 1, 1), Duration = .1f, EaseType = EaseType.EaseInOutQuad, Target = mechanicView.gameObject, OnStart = image.UpdateColorFunctor(), OnUpdate = image.UpdateColorTimedFunctor(), OnEnd = image.UpdateColorFunctor() }; FloatAnimationData rotateData = new FloatAnimationData { StartValue = 0, EndValue = Random.Range(-40, 40), Duration = .3f, EaseType = EaseType.EaseInOutQuad, Target = mechanicView.gameObject, OnStart = rectTransform.UpdateZRotation(), OnUpdate = rectTransform.UpdateZRotationTimed(), OnEnd = rectTransform.UpdateZRotation() }; positionAnimator.StartAnimation(positionData); scaleAnimator.StartAnimation(scaleData); colorAnimator.StartAnimation(colorData); rotateAnimator.StartAnimation(rotateData); }
public void StartAnimation(Vector3AnimationData data) { StartAnimation(new List <Vector3AnimationData> { data }); }