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 rotateData = new FloatAnimationData { StartValue = -40, EndValue = 40, Duration = 0.5f, EaseType = EaseType.EaseInOutQuad, OnStart = effectRect.UpdateZRotation(), OnUpdate = effectRect.UpdateZRotationTimed(), OnEnd = effectRect.UpdateZRotation(), Target = inst, AnimationMode = BosAnimationMode.PingPong }; 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<FloatAnimator>().StartAnimation(rotateData); inst.GetOrAdd<Vector2Animator>().StartAnimation(posData); Destroy(inst, 2); }
private void UpdateExpProgress() { float startValue = expProgressImage.fillAmount; float endValue = ResourceService.PersonalImprovements.GetStatusLevelProgress(Player.StatusPoints); //Services.PlayerService.ExpProgress01; if (startValue > endValue) { startValue = 0; } if (endValue != startValue) { float duration = Mathf.Abs(endValue - startValue) * 4f; FloatAnimationData data = new FloatAnimationData { StartValue = startValue, EndValue = endValue, Duration = duration, EaseType = EaseType.EaseInOutQuad, Target = expProgressImage.gameObject, AnimationMode = BosAnimationMode.Single, OnStart = (val, go) => { expProgressImage.fillAmount = val; progressParticles.Activate(); }, OnUpdate = (val, t, go) => expProgressImage.fillAmount = val, OnEnd = (val, go) => { expProgressImage.fillAmount = val; Services.Execute(() => progressParticles.Deactivate(), 0.5f); } }; expProgressImage.GetComponent <FloatAnimator>().StartAnimation(data); } }
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 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 IEnumerator SetupImpl(int elementId) { yield return(new WaitUntil(() => itemList.IsLoaded)); var endValue = GetEndValue(elementId); var scrollData = new FloatAnimationData { StartValue = scrollRect.content.anchoredPosition.y, EndValue = endValue, Duration = 1, AnimationMode = BosAnimationMode.Single, EaseType = EaseType.EaseInOutQuad, Target = scrollRect.gameObject, OnStart = (v, o) => scrollRect.content.anchoredPosition = new Vector2(0, v), OnUpdate = (v, t, o) => scrollRect.content.anchoredPosition = new Vector2(0, v), OnEnd = (v, o) => scrollRect.content.anchoredPosition = new Vector2(0, v), }; animator.StartAnimation(scrollData); }
private IEnumerator SetupImpl(StoreItemSection section) { yield return(new WaitUntil(() => asyncLoader.gameObject.activeSelf && asyncLoader.gameObject.activeInHierarchy)); asyncLoader.ActivateItems(() => { print("activated completed"); var scrollData = new FloatAnimationData { StartValue = scrollRect.verticalNormalizedPosition, EndValue = sectionPoints[section], Duration = GetAnimationInterval(GetDistance(section)), AnimationMode = BosAnimationMode.Single, EaseType = EaseType.EaseInOutQuad, Target = scrollRect.gameObject, OnStart = (v, o) => scrollRect.verticalNormalizedPosition = v, OnUpdate = (v, t, o) => scrollRect.verticalNormalizedPosition = v, OnEnd = (v, o) => scrollRect.verticalNormalizedPosition = v }; animator.StartAnimation(scrollData); }); }
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 Setup(double cashCount, int coinCount, bool success) { //var colorAnimator = backgroundImage.gameObject.GetOrAdd<ColorAnimator>(); //var scaleAnimator = backFrameTransform.gameObject.GetOrAdd<Vector3Animator>(); /* * Vector3AnimationData scaleData = new Vector3AnimationData { * StartValue = Vector3.zero, * EndValue = Vector3.one, * Duration = 0.2f, * AnimationMode = BosAnimationMode.Single, * EaseType = EaseType.EaseInOutQuintic, * Target = backFrameTransform.gameObject, * OnStart = (s, o) => backFrameTransform.localScale = s, * OnUpdate = (s, t, o) => backFrameTransform.localScale = s, * OnEnd = (s, o) => { * backFrameTransform.localScale = s; * } * }; * * ColorAnimationData colorData = new ColorAnimationData { * StartValue = new Color(0, 0, 0, 0), * EndValue = new Color(0, 0, 0, 0.7f), * Duration = 0.5f, * AnimationMode = BosAnimationMode.Single, * EaseType = EaseType.EaseInOutQuad, * Target = backgroundImage.gameObject, * OnStart = (c, o) => backgroundImage.color = c, * OnUpdate = (c, t, o) => backgroundImage.color = c, * OnEnd = (c, o) => { * backgroundImage.color = c; * scaleAnimator.StartAnimation(scaleData); * } * }; * colorAnimator.StartAnimation(colorData);*/ FloatAnimationData alphaData = new FloatAnimationData { StartValue = 0, EndValue = 1, Duration = 0.3f, AnimationMode = BosAnimationMode.Single, EaseType = EaseType.Linear, Target = gameObject, OnStart = (v, o) => canvasGroup.alpha = v, OnUpdate = (v, t, o) => canvasGroup.alpha = v, OnEnd = (v, o) => canvasGroup.alpha = v }; GetComponent <FloatAnimator>().StartAnimation(alphaData); cashText.text = BosUtils.GetCurrencyString(new CurrencyNumber(cashCount), "#FFFFFF", "#FFDF5F"); coinText.text = coinCount.ToString(); if (!success) { contentParent.Deactivate(); failText.Activate(); } else { failText.Deactivate(); } okButton.SetListener(() => { if (Services != null) { Services.SoundService.PlayOneShot(SoundName.click); backgroundImage.Deactivate(); if (success) { Services.PlayerService.AddGenerationCompanyCash(cashCount); if (coinCount > 0) { Services.PlayerService.AddCoins(coinCount); } } SceneManager.UnloadSceneAsync(6); } else { backgroundImage.Deactivate(); } }); }