Beispiel #1
0
    void Update()
    {
        if (NextNotesNumber <= (MaxNotesAmount - 1))
        {
            if (TimeComponent.GetCurrentTimePast() >= NoteStartTime[NextNotesNumber] && TimeComponent.StartTime != 0)
            {
                AllNotes[NextNotesNumber].SetActive(true);

                if (Notes[NextNotesNumber].type == 2)
                {
                    for (int i = 0; i < Notes[NextNotesNumber].notes.Length; i++)
                    {
                        AllNotesSlider[sliderNotesCount].SetActive(true);
                        AllNotesSlider[sliderNotesCount + 1].SetActive(true);
                        sliderNotesCount += 2;
                    }
                }

                NextNotesNumber++;
                while (checkNextNoteIsSameTime(NextNotesNumber - 1))
                {
                    AllNotes[NextNotesNumber].SetActive(true);

                    if (Notes[NextNotesNumber].type == 2)
                    {
                        for (int i = 0; i < Notes[NextNotesNumber].notes.Length; i++)
                        {
                            AllNotesSlider[sliderNotesCount].SetActive(true);
                            AllNotesSlider[sliderNotesCount + 1].SetActive(true);
                            sliderNotesCount += 2;
                        }
                    }

                    NextNotesNumber++;
                }
            }
        }

        if (TimeComponent.GetCurrentTimePast() >= 15 && GameStatus == Status.InGame && audioSource.isPlaying == false && !FinishedFlag)
        {
            FinishedFlag = true;
            DOVirtual.DelayedCall(1f, () => {
                DebugLog("音楽が終了しました");
                if (videoPlayer.isPlaying)
                {
                    RawImage FadeInImage = rawImage.GetComponent <RawImage>();
                    DOTween.ToAlpha(() => FadeInImage.color, a => FadeInImage.color = a, 0f, 1f);
                }

                GameStatus = Status.Finished;

                //データホルダーに保存
                DataHolder.Score           = (int)System.Math.Round(ScoreCalculation.Score);
                DataHolder.MaximumScore    = ScoreCalculation.MaximumScore;
                DataHolder.ScorePercentage = ScoreCalculation.ScorePercentage;
                DataHolder.Combo           = ScoreCalculation.MaxCombo;
                DataHolder.MaximumCombo    = ScoreCalculation.MaximumCombo;
                DataHolder.JudgementAmount = ScoreCalculation.JudgementCount;
                DataHolder.PlayedTime      = DataHolder.PlayedTime + 1;

                //SceneChange
                float timeDelay          = 0.5f;
                GameObject[] changer     = new GameObject[4];
                RectTransform[] rectTran = new RectTransform[4];

                for (int i = 0; i < 4; i++)
                {
                    changer[i]  = SceneChangeEnd.transform.Find(i.ToString()).gameObject;
                    rectTran[i] = changer[i].GetComponent <RectTransform>();
                }
                changer[0].transform.parent.gameObject.SetActive(true);

                DontDestroyOnLoad(SceneChangeEnd);

                Sequence sceneChangeTween = DOTween.Sequence();
                for (int i = 0; i < 4; i++)
                {
                    changer[i].SetActive(true);
                    sceneChangeTween.Insert(3 + 0.25f * i,
                                            rectTran[i].DOLocalMoveX(0, timeDelay).SetEase(Ease.OutQuint)
                                            );
                }

                sceneChangeTween.Join(
                    DOVirtual.DelayedCall(6f, () =>
                {
                    DataHolder.TemporaryGameObject = SceneChangeEnd;
                    SceneManager.LoadScene("Result");
                })
                    );

                sceneChangeTween.Play();
            });
        }
    }
Beispiel #2
0
    void Update()
    {
        if (this.gameObject.activeSelf)
        {
            transform.localPosition = new Vector3(transform.localPosition.x, GameManager.NoteY, transform.localPosition.z) - (new Vector3(0, 1f, 0) * speed * (float)(TimeComponent.GetCurrentTimePast() - StartTime));
        }

        if (this.transform.position.y < -2.5f)
        {
            this.gameObject.SetActive(false);
            ScoreCalculation.SetNoteJudgement(ScoreCalculation.Judgement.Miss, 3);
        }

        if (this.gameObject.activeSelf)
        {
            double diff = System.Math.Abs(TimeComponent.GetPressedKeyTime(Rail) - ArrivalTime);
            if (diff <= ScoreCalculation.DetectionRange.Bad && diff > ScoreCalculation.DetectionRange.Good) //Bad
            {
                this.gameObject.SetActive(false);
                ScoreCalculation.SetNoteJudgement(ScoreCalculation.Judgement.Bad, 3);
                AddEffect(ScoreCalculation.Judgement.Bad);

                //GameManager.DebugLog(this.gameObject.name + "番のノーツ: Bad");
            }
            else if (diff <= ScoreCalculation.DetectionRange.Good && diff > ScoreCalculation.DetectionRange.Great) //Good
            {
                audioSource[0].PlayOneShot(NoteGoodSE);
                this.gameObject.SetActive(false);
                ScoreCalculation.SetNoteJudgement(ScoreCalculation.Judgement.Good, 3);
                AddEffect(ScoreCalculation.Judgement.Good);
                //GameManager.DebugLog(this.gameObject.name + "番のノーツ: Good");
            }
            else if (diff <= ScoreCalculation.DetectionRange.Great && diff > ScoreCalculation.DetectionRange.Perfect) //Great
            {
                audioSource[0].PlayOneShot(NoteGreatSE);
                audioSource[1].PlayOneShot(NoteSpecialSE);
                this.gameObject.SetActive(false);
                ScoreCalculation.SetNoteJudgement(ScoreCalculation.Judgement.Great, 3);
                AddEffect(ScoreCalculation.Judgement.Great);
                //GameManager.DebugLog(this.gameObject.name + "番のノーツ: Great");
            }
            else if (diff <= ScoreCalculation.DetectionRange.Perfect && diff >= 0) //Perfect
            {
                audioSource[0].PlayOneShot(NotePerfectSE);
                audioSource[1].PlayOneShot(NoteSpecialSE);
                this.gameObject.SetActive(false);
                ScoreCalculation.SetNoteJudgement(ScoreCalculation.Judgement.Perfect, 3);
                AddEffect(ScoreCalculation.Judgement.Perfect);
                //GameManager.DebugLog(this.gameObject.name + "番のノーツ: Perfect");
            }
        }
    }
Beispiel #3
0
    void Update()
    {
        if (this.gameObject.activeSelf)
        {
            //this.transform.localPosition -= new Vector3(0, 1f, 0) * speed * Time.fixedDeltaTime;
            transform.localPosition = new Vector3(transform.localPosition.x, StartPosY, transform.localPosition.z) - (new Vector3(0, 1f, 0) * speed * (float)(TimeComponent.GetCurrentTimePast() - StartTime));

            float y       = transform.localPosition.y;
            bool  pressed = isPressing(GetHitting(y));

            if (y <= DetectionLine)
            {
                //Mask += speed * Time.fixedDeltaTime;
                Mask = (speed * (float)(TimeComponent.GetCurrentTimePast() - ArrivalTime));

                if (!flag && pressed)
                {
                    flag   = true;
                    seFlag = true;
                    audioSource.Play();
                }
            }

            //描画処理
            if (flag)
            {
                setMesh(width, length, Mask);
                CreateMesh();
            }
            if (y + length < -2.5f)
            {
                gameObject.SetActive(false);
            }

            //効果音
            if (seFlag && (y + length < DetectionLine || !pressed))
            {
                audioSource.Stop();
                seFlag = false;
            }
            if (pressed && !seFlag)
            {
                audioSource.Play();
                seFlag = true;
            }

            //判定処理
            scrolledTime = (float)(TimeComponent.GetCurrentTimePast() - ArrivalTime);
            if (scrolledTime >= SPB * count && scrolledTime + ArrivalTime <= FinishTime)
            {
                count++;

                if (pressed)
                {
                    ScoreCalculation.SetNoteJudgement(ScoreCalculation.Judgement.Perfect, 1);
                    scoredFlag = false;
                }
                else
                {
                    if (!scoredFlag)
                    {
                        if (flag) //一度押している
                        {
                            ScoreCalculation.SetNoteJudgement(ScoreCalculation.Judgement.Bad, 1);
                            scoredFlag = true;
                        }
                        else //一度も押していない
                        {
                            ScoreCalculation.SetNoteJudgement(ScoreCalculation.Judgement.Miss, 1);
                            scoredFlag = true;
                        }
                    }
                    else
                    {
                        ScoreCalculation.SetNoteJudgement(ScoreCalculation.Judgement.None, 1);
                    }
                }
            }
        }
    }