// 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 }