public void PresentCoin(int coinNum, Vector3 origin, int startCoinNum, System.Action callback) { float popingDuration = 0.5f; float earnDuration = 0.75f; int showCoinNum = Mathf.RoundToInt(coinNum * 0.1f); showCoinNum = Mathf.Min(15, showCoinNum); var maxDelayFrame = 0; for (int i = 0; i < showCoinNum; i++) { maxDelayFrame = 2 * i; StartCoroutine(KKUtilities.DelayFrame(maxDelayFrame, () => StartCoroutine(EarnCoinAnimation(origin, popingDuration, earnDuration)))); } float delay = popingDuration + earnDuration - 0.25f; float duration = 0.08f * showCoinNum; StartCoroutine(KKUtilities.Delay(delay, () => { CountUpText(startCoinNum, startCoinNum + coinNum, duration); }, false)); this.DelayFrame(maxDelayFrame, () => { this.Delay(popingDuration + earnDuration, () => callback.SafeInvoke()); }); }
void FitImage(int index) { index = Mathf.Clamp(index, 0, imageNum - 1); isChangeImage = index != currentSelectIndex; currentSelectIndex = index; if (fitCoroutine != null) { StopCoroutine(fitCoroutine); } float targetX = -screenWidth * index; float startX = rec.anchoredPosition.x; //何秒かけてtargetXにするかはtargetXまでの距離で判断する float duration = (Mathf.Abs(targetX - startX) / screenWidth) / fitSpeed; Vector2 currentPosition = rec.anchoredPosition; fitCoroutine = StartCoroutine(KKUtilities.FloatLerp(duration, (t) => { currentPosition.x = Mathf.Lerp(startX, targetX, t * t); rec.anchoredPosition = currentPosition; }).OnCompleted(() => { fitCoroutine = null; pageControl.SetIndex(currentSelectIndex); })); }
MyCoroutine GetFadeAnimation(Color startColor, Color endColor, float duration) { return(KKUtilities.FloatLerp(duration, (t) => { panel.color = Color.Lerp(startColor, endColor, t * t); })); }
IEnumerator SkipMissionAnimation(MissionInfoViewer skipInfoViewer) { var missionManager = MyMissionManager.Instance; missionManager.SkipMission(skipInfoViewer.MissionData); AddInfoViewer(3); yield return(KKUtilities.FloatLerp(0.3f, (t) => { skipInfoViewer.transform.localScale = Vector3.Lerp(Vector3.one, Vector3.zero, Easing.InQuad(t)); })); infoViewerPool.ReturnInstance(skipInfoViewer.GetComponent <PoolMonoBehaviour>()); viewers.Remove(skipInfoViewer); for (int i = 0; i < viewers.Count; i++) { var viewer = viewers[i]; var rectTransform = viewer.transform as RectTransform; var startPos = rectTransform.anchoredPosition; var origin = new Vector2(-365.0f, 0.0f); var offset = new Vector2(365.0f, 0.0f); var targetPos = origin + (offset * i); this.FloatLerp(0.3f, (t) => { rectTransform.anchoredPosition = Vector2.Lerp(startPos, targetPos, Easing.OutQuad(t)); }); } yield return(new WaitForSeconds(0.3f)); skipMissionAnimating = false; }
void Start() { KKUtilities.WaitSeconde(2.0f, () => { SceneLoadManager.I.LoadSceneAsync("Content"); UnderBerMenu.I.ChangeIconActive("Content"); }, this); }
void OnCollisionEnter(Collision col) { if (col.gameObject.tag != "Tumbleweed") { return; } var t = col.gameObject.GetComponent <TumbleweedScript>(); AkSoundEngine.PostEvent("Damage", gameObject); //todo:当たった草の状態でダメージ量を変化させる ScoreManager.I.hitCount = ScoreManager.I.hitCount + 1; if (t.tumbleweedType == TumbleweedScript.Type.Fire) { Damage(15); if (effect != null) { effect.SetActive(true); } KKUtilities.Delay(damageTime, () => { if (effect != null) { effect.SetActive(false); } }, this); } else { Damage(5); } }
protected override IEnumerator TutorialAnimation() { var wait = new WaitForSeconds(0.5f); while (true) { fingerRectTransform.anchoredPosition = startPoint.RectTransform.anchoredPosition; ChangeImage(FingerType.Up); fingerRectTransform.gameObject.SetActive(true); yield return(wait); ChangeImage(FingerType.Down); yield return(wait); var start = startPoint.RectTransform.anchoredPosition; var end = endPoint.RectTransform.anchoredPosition; var duration = KKUtilities.GetDuration(start, end, speed); yield return(KKUtilities.FloatLerp(duration, (t) => { end = endPoint.RectTransform.anchoredPosition; fingerRectTransform.anchoredPosition = Vector3.Lerp(start, end, t); }, false)); ChangeImage(FingerType.Up); yield return(wait); fingerRectTransform.gameObject.SetActive(false); } }
void Update() { if (stateController.CurrentState == PlayerState.Dead) { return; } leftStick = MyInputManager.GetAxis(MyInputManager.Axis.LeftStick); movement.x = leftStick.x; //movement.z = leftStick.y; movement.y = 0.0f; //todo:z軸に勝手に移動? movement.z = 1.0f; movement *= moveSpeed * Time.deltaTime; //ジャンプ if (MyInputManager.GetButtonDown(MyInputManager.Button.A)) { if (stateController.CurrentState == PlayerState.OnGround) { ActionJump(); } } switch (stateController.CurrentState) { case PlayerState.Jump: movement *= 0.4f; inerVec *= 1.01f; m_body.velocity += inerVec * Time.deltaTime; if (m_transform.position.y - oldPosition.y < 0) { stateController.CurrentState = PlayerState.Fall; } break; case PlayerState.Fall: movement *= 0.4f; inerVec *= 1.01f; m_body.velocity += inerVec * Time.deltaTime; if (IsNearGround()) { AkSoundEngine.PostEvent("Footsteps", gameObject); m_animator.SetTrigger("Landing"); stateController.CurrentState = PlayerState.Land; } break; case PlayerState.Land: movement *= 0.8f; KKUtilities.Delay(landingTime, () => stateController.CurrentState = PlayerState.OnGround, this); break; } oldPosition = m_transform.position; }
// Update is called once per frame void Update() { if (score >= scoreM && !doonce) { doonce = true; StartCoroutine(KKUtilities.ChangeScene(sceneName, 3.0f)); } }
IEnumerator VibrateCoroutine(float duration) { var manager = MyVibrationManager.Instance; yield return(KKUtilities.FloatLerp(duration, (_) => { manager.Vibrate(VibrationType.SelectionChange); })); }
public IEnumerator SuggestRestart() { tapToRestartContainer.SetActive(true); yield return(KKUtilities.WaitAction(tapToRestartButton.OnClickEvent, () => { tapToRestartContainer.SetActive(false); })); }
MyCoroutine ChangeSelectMakerPosition(Vector2 targetPosition) { Vector2 startPosition = selectMakerRec.anchoredPosition; return(KKUtilities.FloatLerp(0.2f, (t) => { selectMakerRec.anchoredPosition = Vector2.Lerp(startPosition, targetPosition, t); }).OnCompleted(() => positionControlCoroutine = null)); }
void ChangeScene(string sceneName) { if (isChangeScene) { return; } isChangeScene = true; StartCoroutine(FadeManager.Instance.FadeOut(1.0f)); StartCoroutine(KKUtilities.ChangeScene(sceneName, 1.0f)); }
IEnumerator CloseBookAnimation() { bookAnimator.Play("CloseBook"); yield return(new WaitForSeconds(1.5f)); var startPos = cameraTransform.position; var startRot = cameraTransform.rotation; yield return(KKUtilities.FloatLerp(1.0f, (t) => { var temp = Easing.InQuad(t); cameraTransform.SetPositionAndRotation( Vector3.Lerp(startPos, targetCameraTransform.position, temp), Quaternion.Lerp(startRot, targetCameraTransform.rotation, temp)); })); namingContainer.SetActive(true); while (true) { yield return(KKUtilities.WaitAction(okButton.onClick)); if (!string.IsNullOrEmpty(input.text)) { break; } } namingContainer.SetActive(false); textmesh.text = input.text; //1回転 var c = Camera.main.transform; yield return(KKUtilities.FloatLerp(0.5f, (t) => { c.AddLocalPositoinZ(-1.0f * Time.deltaTime); })); gameClearMessage.SetActive(true); reReadButton.gameObject.SetActive(true); gotoTitleButton.gameObject.SetActive(true); foreach (var p in particles) { p.Play(true); } while (true) { yield return(KKUtilities.FloatLerp(3.0f, (t) => { bookAnimator.transform.parent.SetRotationZ(Mathf.Lerp(0.0f, 360.0f, Easing.Linear(t))); })); } }
IEnumerator Animation() { while (true) { yield return(KKUtilities.FloatLerp(2.0f, (t) => { //baseImage.transform.localScale = Vector3.one * Mathf.LerpUnclamped(1.0f, 1.3f, baseImageScaleCurve.Evaluate(t)); markImage.transform.localScale = Vector3.one * Mathf.LerpUnclamped(1.0f, 1.5f, markImageScaleCurve.Evaluate(t)); baseImage.transform.SetLocalRotationZ(Mathf.LerpUnclamped(0.0f, 30.0f, markImageRotCurve.Evaluate(t))); })); } }
// Update is called once per frame void Update() { if (CarHp <= 0) { StartCoroutine(KKUtilities.ChangeScene("Lose", 3.0f)); } // if (Isdamaged) // { // Isdamaged = false; // CarHp--; // } }
public void PlayShortAnimation(int coinNum, Vector3 origin, float popingDuration = 0.5f) { for (int i = 0; i < coinNum; i++) { StartCoroutine(KKUtilities.Delay(0.1f * i, () => StartCoroutine(EarnCoinShortAnimation(origin, popingDuration)), false)); } int startCoinNum = MyUserDataManager.Instance.CurrentCoinNum; StartCoroutine(KKUtilities.Delay(popingDuration, () => CountUpText(startCoinNum, startCoinNum + coinNum, 0.5f), false)); MyUserDataManager.Instance.EarnCoin(coinNum); }
void Start() { inputField.onEndEdit.AddListener((text) => { KKUtilities.Delay(1, () => inputField.interactable = false, this); }); OnClick.AddListener(() => { inputField.interactable = true; inputField.Select(); }); }
void Start() { SwipeGetter.Instance.onTouchStart.AddListener((pos) => { touchPos = pos; }); SwipeGetter.Instance.onTouching.AddListener((pos) => { var angle = (pos - touchPos).Angle(); target.SetRotationY(KKUtilities.LerpRotation(target.eulerAngles.y, angle, Time.deltaTime * 12.0f)); }); }
IEnumerator AlphaAnimation() { var wait = new WaitForSeconds(3.0f); while (true) { yield return(wait); yield return(KKUtilities.FloatLerp(2.0f, (t) => { message.Alpha = Mathf.Lerp(1.0f, 0.0f, Easing.Yoyo(Easing.InQuad(t))); })); } }
IEnumerator TitleLogoAnimation() { var wait = new WaitForSeconds(4.0f); while (true) { yield return(wait); yield return(KKUtilities.FloatLerp(3.0f, (t) => { titleLogoTransform.SetRotationZ(Mathf.LerpUnclamped(0.0f, 10.0f, rotationCurve.Evaluate(t))); })); } }
IEnumerator DamageEffect() { profile.vignette.enabled = true; yield return(KKUtilities.FloatLerp(invincibleTime, (t) => { VignetteModel.Settings setting = profile.vignette.settings; setting.intensity = Mathf.Lerp(0.5f, 0.0f, t * t); profile.vignette.settings = setting; })); yield return(null); profile.vignette.enabled = false; }
public void CountUpText(int start, int end, float duration, bool vibrate = true) { if (vibrate) { StartCoroutine(VibrateCoroutine(duration * 0.8f)); } foreach (var c in coinNumTexts) { StartCoroutine(KKUtilities.FloatLerp(duration, (t) => { c.Text = ((int)Mathf.Lerp(start, end, t)).ToString(); }, false)); } }
//void Start() //{ // Sequence sequence = DOTween.Sequence(); // sequence.Append(transform.DOMoveX(40.0f, 3.0f).SetEase(Ease.InQuad)); // sequence.Join(transform.DOMoveY(40.0f, 3.0f)); //} void Update() { if (Input.GetKeyDown(KeyCode.A)) { Vector2 startPosition = Image.rectTransform.anchoredPosition; Vector2 targetPosition = startPosition; targetPosition.x = endX; StartCoroutine(KKUtilities.FloatLerp(3.0f, (t) => { Image.rectTransform.anchoredPosition = Vector2.LerpUnclamped(startPosition, targetPosition, Easing.GetEase(t, ease)); })); } }
public void ChangeState(int index, float waitTime = 0.0f) { if (currentState != null) { currentState.Exit(); } if (waitTime == 0.0f) { currentState = FindState(index); return; } StartCoroutine(KKUtilities.Delay(waitTime, () => { currentState = FindState(index); })); }
void Start() { Vector2 touchStartPos = Vector2.zero; SwipeGetter.Instance.onTouchStart.AddListener((pos) => { touchStartPos = pos; }); SwipeGetter.Instance.onTouching.AddListener((pos) => { var vec = pos - touchStartPos; var angleY = KKUtilities.LerpRotation(transform.localEulerAngles.y, vec.Angle(), Time.deltaTime * 5.0f); transform.SetLocalRotationY(angleY); transform.Translate(vec.ToXZVector3() * Time.deltaTime * 0.02f, Space.World); }); }
// Use this for initialization void Start() { //SizeFilterの変更に1フレームかかるのでディレイをかける KKUtilities.WaitSeconde(0.01f, () => { //タイトルが2行になったら1行分ずらす Vector2 tmp = Vector2.down * (setTextTransforms[0].sizeDelta.y - 86.0f); setTextTransforms[1].anchoredPosition += tmp; setTextTransforms[2].anchoredPosition += tmp; float boxSize = 0.0f; foreach (RectTransform c in setTextTransforms) { boxSize += c.sizeDelta.y; } ContentsBox.sizeDelta = new Vector2(ContentsBox.sizeDelta.x, boxSize); }, this); }
public void Damage(int point) { if (isInvicible) { return; } m_Animator.SetTrigger("Damaged"); hpGauge.Value = hpGauge.Value - point; isInvicible = true; KKUtilities.Delay(invincibleTime, () => isInvicible = false, this); StartCoroutine(DamageEffect()); if (hpGauge.Value == 0) { stateController.CurrentState = PlayerState.Dead; } }
/// <summary> /// モード切替 /// </summary> public void PushUpBotton() { if (upMade == false) { upMade = true; canTapScaleButton = true; TapScaleImage(true); canTapRange.sizeDelta = new Vector2(canTapRange.sizeDelta.x, canTapRange.sizeDelta.y * TapRangeRatio); scaleButton.GetComponent <Image>().sprite = outButtonSprite[0]; SpriteState sprite; sprite.pressedSprite = outButtonSprite[1]; sprite.highlightedSprite = outButtonSprite[0]; sprite.disabledSprite = outButtonSprite[0]; scaleButton.spriteState = sprite; controlImage.gameObject.SetActive(true); StartCoroutine(KKUtilities.FloatLerp(0.3f, (t) => { contentGroup.alpha = Mathf.Lerp(1, 0, t); })); } else { TapScaleImage(false); canTapRange.sizeDelta = new Vector2(canTapRange.sizeDelta.x, canTapRange.sizeDelta.y / TapRangeRatio); scaleButton.GetComponent <Image>().sprite = upButtonSprite[0]; SpriteState sprite; sprite.pressedSprite = upButtonSprite[1]; sprite.highlightedSprite = upButtonSprite[0]; sprite.disabledSprite = upButtonSprite[0]; scaleButton.spriteState = sprite; controlImage.gameObject.SetActive(false); StartCoroutine(KKUtilities.FloatLerp(0.3f, (t) => { contentGroup.alpha = Mathf.Lerp(0, 1, t); })); upMade = false; } }
// Update is called once per frame void Update() { if (!fade) { StartCoroutine(FadeManager.Instance.FadeIn(0.5f)); fade = true; } if (Input.GetKeyDown(KeyCode.Return)) { if (isChangeScene) { return; } AudioManager.Instance.PlayOneShot("OpSE"); isChangeScene = true; StartCoroutine(FadeManager.Instance.FadeOut(1.0f)); StartCoroutine(KKUtilities.ChangeScene(sceneName, 1.0f)); } }