コード例 #1
0
        public void UpdateGame(float elapsedFromStartTimeSec)
        {
            if (noteItems == null)
            {
                return;
            }

            // User Action check
            userAction.checkInput();
            var count = userAction.GetCount();

            for (int i = 0; i < count; i++)
            {
                // タップ状態の変更時に1回のみ実行
                var userActionState = userAction.GetInputState(i);

                if (userActionState == UserActionState.TapStart)
                {
                    OnButtonTap(i);
                    canvas.OnTapBtn(i, true);
                }
                else if (userActionState == UserActionState.TapEnd)
                {
                    OnButtonOut(i);
                    canvas.OnTapBtn(i, false);
                }
            }

            // canvasの更新
            canvas.UpdateGame(elapsedFromStartTimeSec);

            // ノートの更新
            foreach (var note in noteItems)
            {
                // 消滅判定
                var distance = note.GetDistance(elapsedFromStartTimeSec);
                if (distance < -2000)
                {
                    continue;
                }

                // 生成判定 (必要なタイミングでノートのビューを生成します)
                if (note.isStartOnce(elapsedFromStartTimeSec))
                {
                    note.CreateSpriteView(canvas.panel.transform, prefabFactory);
                    note.UpdateState();
                }

                // ビューの処理
                if (note.view)
                {
                    note.UpdateView(elapsedFromStartTimeSec);
                }

                // debug:オートプレイ
                if (canvas.toggle.isOn && gameLogic.DetectAuto(note, elapsedFromStartTimeSec))
                {
                    gameLogic.DestroyNote(note);
                    onPerfect(note.xId);
                }

                // 消滅判定
                if (note.view && note.isEnd(elapsedFromStartTimeSec))
                {
                    // 連結ノーツ以外消去
                    if (note.state == NoteState.WaitTap)
                    {
                        gameLogic.DestroyNote(note);
                    }
                }
            }
        }