コード例 #1
0
    private void Update()
    {
        if (_state == State.Gameplay && _beatMap.IsReady())
        {
            if (_beatMap.IsDone())
            {
                _state = State.Result;
                playerData.SetMusicGrade(gradeList);
                _audioManager.TryPlay();

                _currentDialog = resultDialog;
                _currentDialog.ApplyCharacter(_characterData);
                _currentDialog.Display(playerData, _characterData);
                return;
            }

            BeatObject beatObject = _beatMap.RequestDrawableBeat();
            if (beatObject != null)
            {
                BeatRenderer beatRenderer = Instantiate(prefabBeat).GetComponent <BeatRenderer>();
                beatRenderer.SetData(beatObject, _beatMap);
                beatRenderer.Init();
            }

            BeatObjectGrade grade = _beatMap.React(false);

            if (grade == BeatObjectGrade.Miss)
            {
                gradeList.Add(grade);
                badAudio.Play();
                Instantiate(prefabMiss);
            }
        }
    }
コード例 #2
0
    private BeatObject CreateBeat(int index)
    {
        GameObject beatObject = Instantiate(beatPrefab);

        beatObject.transform.position = this.transform.position;

        BeatObject beat = beatObject.GetComponent <BeatObject>();

        beat.Init(index);

        return(beat);
    }
コード例 #3
0
    public BeatMap GenerateBeatMap()
    {
        BeatMap beatMap = beatMapBase.ShallowClone();

        beatMap.beatObjectList.Clear();

        foreach (int timestampInt in timestampList)
        {
            BeatObject beatObject = new BeatObject();
            beatObject.beatTime = timestampInt / 1000f;
            beatMap.beatObjectList.Add(beatObject);
        }

        return(beatMap);
    }
コード例 #4
0
    void MonitorCurrentBeats()
    {
        if (currentPlayerBeat == null)
        {
            for (int i = 1; i < playerBar.transform.childCount; i++)
            {
                BeatObject beatScript = playerBar.transform.GetChild(i).gameObject.GetComponent <BeatObject>();
                if (!beatScript.IsOriginal && !beatScript.MissedBeat)
                {
                    currentPlayerBeat = playerBar.transform.GetChild(i).gameObject;
                    break;
                }
            }
        }
        else
        {
            BeatObject beatScript = currentPlayerBeat.GetComponent <BeatObject>();
            if (!beatScript.IsOriginal && !beatScript.MissedBeat && beatScript.DistanceToCenter > middleRegion)
            {
                // Whoops you missed a beat, time to update current player beat
                beatScript.MissedBeat = true;
                UpdateCurrentPlayerBeat(false);
            }
        }

        if (currentEnemyBeat == null)
        {
            for (int i = 1; i < enemyBar.transform.childCount; i++)
            {
                BeatObject beatScript = enemyBar.transform.GetChild(i).gameObject.GetComponent <BeatObject>();
                if (!beatScript.IsOriginal && !beatScript.MissedBeat)
                {
                    currentEnemyBeat = enemyBar.transform.GetChild(i).gameObject;
                    break;
                }
            }
        }
        else
        {
            BeatObject beatScript = currentEnemyBeat.GetComponent <BeatObject>();
            if (!beatScript.IsOriginal && !beatScript.MissedBeat && beatScript.DistanceToCenter < -middleRegion)
            {
                // Whoops you missed a beat, time to update current player beat
                beatScript.MissedBeat = true;
                UpdateCurrentEnemyBeat(false);
            }
        }
    }
コード例 #5
0
ファイル: Beatkeeper.cs プロジェクト: Rosstin/UNDERDREAM
    protected void Update()
    {
        BaseUpdate();

        lastTime    = currentTime;
        currentTime = Data.GetTigerSong().time;

        if (currentTime > songSegmentEndTime)
        {
            LoadNextScene();
        }

        if (!itsOver)
        {
            if (beatIndexPlayer < beatTimes.Count)
            {
                // the player has to be able to see the hurdles ahead of time
                float startTime = beatTimes[beatIndexPlayer] - beatRadiusVisualHint;
                float endTime   = beatTimes[beatIndexPlayer] + beatRadiusVisualHint;

                // kick off the hurdle
                if (currentTime > startTime)
                {
                    Hurdle newHurdle = Instantiate(hurdle.gameObject).GetComponent <Hurdle>();
                    StartCoroutine(KickOffHurdle(beatIndexPlayer, newHurdle));
                    beatIndexPlayer++;
                }
            }

            if (aTimes.Count > 0 && aIndex < aTimes.Count)
            {
                // the player has to be able to see the hurdles ahead of time
                float startTime = beatTimes[aIndex] - beatRadiusVisualHint;
                float endTime   = beatTimes[aIndex] + beatRadiusVisualHint;

                // kick off the hurdle
                if (currentTime > startTime)
                {
                    BeatObject newHurdle = Instantiate(a.gameObject).GetComponent <BeatObject>();
                    StartCoroutine(KickOffBeatObject(aIndex, newHurdle));
                    aIndex++;
                }
            }
        }
    }
コード例 #6
0
ファイル: Beatkeeper.cs プロジェクト: Rosstin/UNDERDREAM
    /// <summary>
    /// kick off a visual flair on time to beat
    /// </summary>
    /// <param name="index"></param>
    /// <param name="beatObject"></param>
    /// <returns></returns>
    protected IEnumerator KickOffBeatObject(int index, BeatObject beatObject)
    {
        bool madeYellow = false;

        float visualStartTime = aTimes[index] - beatRadiusVisualHint;
        float visualEndTime   = aTimes[index] + beatRadiusVisualHint;

        while (currentTime < visualEndTime)
        {
            float hurdleProgress = (currentTime - visualStartTime) / (visualEndTime - visualStartTime);
            beatObject.transform.position = Vector3.Lerp(aStart.transform.position, aEnd.transform.position, hurdleProgress);

            yield return(0);
        }

        yield return(new WaitForSeconds(0.2f));

        Destroy(beatObject.gameObject);
    }
コード例 #7
0
ファイル: BeatController.cs プロジェクト: reckhou/moeShooter
 private void updateBeatObject(BeatObject obj)
 {
     if (obj is BeatObjectDefault) {
         BeatObjectDefault curObj = obj as BeatObjectDefault;
         curObj.BarTime = nextBarTime;
     }
 }
コード例 #8
0
    /// <summary>
    ///
    /// </summary>
    public void CheckForBeat(KeyCode key)
    {
        if (currentPlayerBeat != null)
        {
            BeatObject beatScript = currentPlayerBeat.GetComponent <BeatObject>();

            if (!beatScript.IsOriginal &&
                !beatScript.MissedBeat &&
                beatScript.DistanceToCenter >= -middleRegion &&
                beatScript.DistanceToCenter <= middleRegion)
            {
                switch (beatScript.myBeatType)
                {
                case BeatObject.BeatType.Up:
                    if (key == KeyCode.UpArrow)
                    {
                        UpdateCurrentPlayerBeat(true);
                    }
                    break;

                case BeatObject.BeatType.Down:
                    if (key == KeyCode.DownArrow)
                    {
                        UpdateCurrentPlayerBeat(true);
                    }
                    break;

                case BeatObject.BeatType.Left:
                    if (key == KeyCode.LeftArrow)
                    {
                        UpdateCurrentPlayerBeat(true);
                    }
                    break;

                case BeatObject.BeatType.Right:
                    if (key == KeyCode.RightArrow)
                    {
                        UpdateCurrentPlayerBeat(true);
                    }
                    break;

                case BeatObject.BeatType.Normal:
                    if (key == KeyCode.Space)
                    {
                        UpdateCurrentPlayerBeat(true);
                    }
                    break;
                }
            }
            else
            {
                // they hit the key with no beat in range
            }
        }

        if (currentEnemyBeat != null)
        {
            BeatObject beatScript = currentEnemyBeat.GetComponent <BeatObject>();

            if (!beatScript.IsOriginal &&
                !beatScript.MissedBeat &&
                beatScript.DistanceToCenter >= -middleRegion &&
                beatScript.DistanceToCenter <= middleRegion)
            {
                if (key == KeyCode.Space)
                {
                    UpdateCurrentEnemyBeat(true);
                }
            }
            else
            {
                // they hit the key with no beat in range
            }
        }
    }
コード例 #9
0
 public void SetData(BeatObject beatObject, BeatMap beatMap)
 {
     _beatMap    = beatMap;
     _beatObject = beatObject;
 }