Beispiel #1
0
    //アニメーションのコマを切り替える
    void RunAnimation()
    {
        int animeNum = 0;

        animeTimer    += Time.deltaTime;
        mySprite.flipX = defaultFlipX;
        switch (animeState)
        {
        case Animation.AnimeBreak:
            animeTimer      = 0.0f;
            animeState      = Animation.AnimeBreak;
            animeFrame      = 0;
            mySprite.sprite = DefaultSprite;
            mySprite.flipX  = defaultFlipX;
            break;

        case Animation.KillAnime:
            if (animeTimer > 0.16f)
            {
                FullScreenCol.enabled = true;
                animeTimer            = 0.0f;
                ++animeFrame;
                if (animeFrame > KillingAnimes.Length)
                {       //次のアニメへ
                    this.transform.position = defaultPos;
                    animeFrame = 0;
                    animeState = Animation.TargetToMoveForMedic;
                    FullScreenSprite.sprite = null;
                    if (KillingMob)
                    {
                        KillingMob.Killed();
                    }
                }
                else
                {       //コマ切り替え
                    FullScreenSprite.sprite = KillingAnimes[animeFrame - 1];
                }
            }
            break;

        case Animation.TargetToMove:
            mySprite.sprite         = KillRunning;
            this.transform.position = Vector2.Lerp(this.transform.position, targetPos, Time.deltaTime * MoveSpeed);

            if (Vector2.Distance(transform.position, targetPos) < 1.8f)
            {
                animeTimer = 0.0f;
                animeFrame = 0;
                animeState = Animation.KillAnime;
            }
            break;

        case Animation.TargetToMoveForMedic:
            animeNum        = (int)(animeTimer * 8) % (WorkingAnime.Length);
            animeNum        = Mathf.Clamp(animeNum, 0, WorkingAnime.Length - 1);
            mySprite.sprite = WorkingAnime[animeNum];

            this.transform.position = Vector2.Lerp(this.transform.position, targetPos, Time.deltaTime * MoveSpeedForMedic);

            if (Vector2.Distance(transform.position, targetPos) < 2.5f)
            {
                animeTimer = 0.0f;
                animeFrame = 0;
                animeState = Animation.GiveMedic;
            }
            break;

        case Animation.BackToDefalt:
            animeNum        = (int)(animeTimer * 8) % (WorkingAnime.Length);
            animeNum        = Mathf.Clamp(animeNum, 0, WorkingAnime.Length - 1);
            mySprite.sprite = WorkingAnime[animeNum];
            mySprite.flipX  = !defaultFlipX;

            this.transform.position = Vector2.Lerp(this.transform.position, defaultPos, Time.deltaTime * MoveSpeedForMedic);

            if (Vector2.Distance(transform.position, defaultPos) < 0.3f)
            {
                animeTimer = 0.0f;
                animeFrame = 0;
                animeState = Animation.AnimeBreak;
            }
            break;

        case Animation.GiveMedic:
            if (animeTimer > 0.16f)
            {
                animeTimer = 0.0f;
                ++animeFrame;
                if (animeFrame > MedicAnimes.Length)
                {                                   //次のアニメへ
                    GameCtrler.ChangeMenuControl(); //メニュー操作状態にする
                    animeFrame = 0;
                    animeState = Animation.ClickWaitForText;
                }
                else
                {       //コマ切り替え
                    FullScreenSprite.sprite = MedicAnimes[animeFrame - 1];
                }
            }
            break;

        case Animation.FirstPlayText:
            if (animeTimer > 0.16f)
            {
                FullScreenCol.enabled = true;
                animeTimer            = 0.0f;
                ++animeFrame;
                if (animeFrame > FirstTextAnime.Length)
                {                                   //次のアニメへ
                    GameCtrler.ChangeMenuControl(); //メニュー操作状態にする
                    animeFrame = 0;
                    animeState = Animation.ClickWaitForText;
                }
                else
                {       //コマ切り替え
                    FullScreenSprite.sprite = FirstTextAnime[animeFrame - 1];
                }
            }
            break;

        case Animation.ClickWaitForText:
            animeTimer = 0.0f;
            animeFrame = 0;
            break;

        default:
            break;
        }
    }