示例#1
0
    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);
        }));
    }
示例#3
0
 MyCoroutine GetFadeAnimation(Color startColor, Color endColor, float duration)
 {
     return(KKUtilities.FloatLerp(duration, (t) =>
     {
         panel.color = Color.Lerp(startColor, endColor, t * t);
     }));
 }
示例#4
0
    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;
    }
示例#5
0
 void Start()
 {
     KKUtilities.WaitSeconde(2.0f, () => {
         SceneLoadManager.I.LoadSceneAsync("Content");
         UnderBerMenu.I.ChangeIconActive("Content");
     }, this);
 }
示例#6
0
    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);
        }
    }
示例#8
0
    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;
    }
示例#9
0
 // Update is called once per frame
 void Update()
 {
     if (score >= scoreM && !doonce)
     {
         doonce = true;
         StartCoroutine(KKUtilities.ChangeScene(sceneName, 3.0f));
     }
 }
示例#10
0
    IEnumerator VibrateCoroutine(float duration)
    {
        var manager = MyVibrationManager.Instance;

        yield return(KKUtilities.FloatLerp(duration, (_) =>
        {
            manager.Vibrate(VibrationType.SelectionChange);
        }));
    }
示例#11
0
    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));
    }
示例#13
0
 void ChangeScene(string sceneName)
 {
     if (isChangeScene)
     {
         return;
     }
     isChangeScene = true;
     StartCoroutine(FadeManager.Instance.FadeOut(1.0f));
     StartCoroutine(KKUtilities.ChangeScene(sceneName, 1.0f));
 }
示例#14
0
    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)));
         }));
     }
 }
示例#16
0
 // Update is called once per frame
 void Update()
 {
     if (CarHp <= 0)
     {
         StartCoroutine(KKUtilities.ChangeScene("Lose", 3.0f));
     }
     //      if (Isdamaged)
     //      {
     //          Isdamaged = false;
     //          CarHp--;
     //      }
 }
示例#17
0
    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);
    }
示例#18
0
    void Start()
    {
        inputField.onEndEdit.AddListener((text) =>
        {
            KKUtilities.Delay(1, () => inputField.interactable = false, this);
        });
        OnClick.AddListener(() =>
        {
            inputField.interactable = true;

            inputField.Select();
        });
    }
示例#19
0
    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));
        });
    }
示例#20
0
    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)));
            }));
        }
    }
示例#21
0
    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)));
            }));
        }
    }
示例#22
0
    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;
    }
示例#23
0
 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));
     }
 }
示例#24
0
    //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);
        });
    }
示例#27
0
    // 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);
    }
示例#28
0
    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;
        }
    }
示例#29
0
    /// <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;
        }
    }
示例#30
0
    // 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));
        }
    }