Ejemplo n.º 1
0
    // Update is called once per frame
    void Update()
    {
        Tempo = staticScript.bgmData.Tempo;
        int OffSetRhythm = (int)(staticScript.bgmData.OffSetTime / OneRyhthmTime);

        if (!Init)
        {
            _DynamicRhythm.Init(-staticScript.bgmData.OffSetTime / OneRyhthmTime);
            _FixedRhythm.Init(-staticScript.bgmData.OffSetTime / OneRyhthmTime);
            _ReadyFixedRhythm.Init(_FixedRhythm.Pos + (OffSetRhythm + 2));
            Init = true;
        }
        //音楽の位置から固定時間軸拍子の位置を設定
        float bgmTime = staticScript.bgmData.BGMTime;

        if (ForceStoped)
        {
            _FixedRhythm.Pos = _FixedRhythm.Pos;
        }
        else if (Stoped)
        {
            StopTime        += Time.unscaledDeltaTime;
            _FixedRhythm.Pos = _FixedRhythm.Pos + (Time.unscaledDeltaTime * staticScript.bgmData.GetSpeed() / OneRyhthmTime) * StopCurve.Evaluate(StopTime);
        }
        else if (staticScript.bgmData.IsPlayEnd)
        {
            _FixedRhythm.Pos = _FixedRhythm.Pos + (Time.unscaledDeltaTime * staticScript.bgmData.GetSpeed() / OneRyhthmTime);
        }
        else
        {
            _FixedRhythm.Pos = (bgmTime - staticScript.bgmData.OffSetTime) / OneRyhthmTime;
        }
        _ReadyFixedRhythm.Pos = _FixedRhythm.Pos + (OffSetRhythm + 2);

        if (_FixedRhythm.Tyming && _IsSlow)
        {
            int Rest = SlowEndPos - (int)_FixedRhythm.Pos;

            if (Rest == 0)
            {
                Instantiate(taiko);
            }
            else if (Rest <= 3)
            {
                Instantiate(huti);
            }
        }
        // スロー終了
        if (_IsSlow && SlowEndPos < _FixedRhythm.Pos)
        {
            _IsSlow = false;

            //ずれた分を遅延に加算
            DynamicRhythmDelay += (SlowEndPos - SlowStartPos) - (int)((SlowEndPos - SlowStartPos) / SlowTempo);
        }
        if (_IsSlow)
        {
            //スロー時間軸位置を開始位置と固定時間軸拍子の位置から設定
            _SlowRhythm.Pos = _FixedRhythm.Pos - SlowStartPos;

            //可変拍子位を開始位置と固定時間軸拍子の位置から設定
            _DynamicRhythm.Pos = ((SlowStartPos - DynamicRhythmDelay) + _SlowRhythm.Pos / SlowTempo);
        }
        else
        {
            //固定時間軸拍子の位置から可変拍子位置を設定
            _DynamicRhythm.Pos = (_FixedRhythm.Pos - DynamicRhythmDelay);
        }

        //Time .timeScale = _DynamicRhythm .DeltaTime;
        //if (Time .timeScale < 0.1f)
        //{
        //	Time .timeScale = 0.1f;
        //}



//#if UNITY_EDITOR
//		staticScript .debugCode .AddText( "DynamicPos : " + _DynamicRhythm .Pos );
//#endif
    }