示例#1
0
        /// <summary>
        /// 检测是否有击中音符对象
        /// 如果是,它将执行命中并删除
        /// </summary>
        public void CheckNoteHit()
        {
            //if (!gameController.gameStart)
            //{
            //    CreateDownEffect();
            //    return;
            //}
            if (trackedNotes.Count > 0)
            {
                NoteObject noteObject = trackedNotes.Peek();
                if (noteObject.hitOffset > -20000)
                {
                    trackedNotes.Dequeue();
                    //Debug.Log(trackedNotes.Count);
                    int hitLevel = noteObject.IsNoteHittable();
                    gameController.ChangeHitLevelSprite(hitLevel);
                    if (hitLevel > 0)
                    {
                        //更新分数
                        gameController.UpdateScoreText(100 * hitLevel);
                        if (noteObject.isLongNote)
                        {
                            HasLongNote = true;
                            CreateHitLongEffect();
                            //noteObject.OnHitLongNote();
                        }
                        else if (noteObject.isLongNoteEnd)
                        {
                            HasLongNote = false;
                        }
                        else
                        {
                            CreateHitEffect();
                        }

                        //增加连接数
                        gameController.comboNum++;
                        //Debug.Log("comboNum:" + gameController.comboNum);
                    }
                    else
                    {
                        //未击中
                        //断掉玩家命中连接数
                        gameController.HideComboNumText();
                        gameController.comboNum = 0;
                    }
                    noteObject.OnHit();
                }
                else
                {
                    CreateDownEffect();
                }
            }
            else
            {
                CreateDownEffect();
            }
        }
示例#2
0
 /// <summary>
 /// 检测长音符
 /// </summary>
 public void CheckLongNote()
 {
     if (HasLongNote)
     {
         NoteObject noteObject = trackedNotes.Peek();
         trackedNotes.Dequeue();
         gameController.ReturnNoteObjectToPool(noteObject);
     }
 }
示例#3
0
 /// <summary>
 /// 将音符对象放回对象池
 /// </summary>
 /// <param name="obj"></param>
 public void ReturnNoteObjectToPool(NoteObject obj)
 {
     if (obj != null)
     {
         obj.enabled = false;
         obj.gameObject.SetActive(false);
         noteObjectPool.Push(obj);
     }
 }
示例#4
0
        /// <summary>
        /// 生成长音符
        /// </summary>
        void CreateLongNote()
        {
            float time = 0;

            time += Time.deltaTime;
            if (time >= 0.5f)
            {
                NoteObject obj = gameController.GetFreshNoteObject();
                obj.InitializeLongNote(NoteNum, this, gameController);
                time = 0;
            }
        }
示例#5
0
        /// <summary>
        /// 检测是否生成下一个新音符
        /// </summary>
        public void CheckSpawnNext()
        {
            int samplesToTarget = GetSpawnSampleOffset();

            int currentTime = gameController.DelayedSampleTime;

            while (pendingEventIdx < laneEvents.Count &&
                   laneEvents[pendingEventIdx].StartSample < currentTime + samplesToTarget)
            {
                KoreographyEvent evt = laneEvents[pendingEventIdx];
                NoteNum = evt.GetIntValue();
                //Debug.Log("noteNum:" + noteNum);
                NoteObject newObj          = gameController.GetFreshNoteObject();
                bool       isLongNoteStart = false;
                bool       isLongNoteEnd   = false;
                if (NoteNum > 4)
                {
                    isLongNoteStart = true;
                    InLongNote      = true;
                    NoteNum         = NoteNum - 4;
                    CreateLongNote();

                    if (NoteNum > 4)
                    {
                        isLongNoteEnd   = true;
                        isLongNoteStart = false;
                        NoteNum         = NoteNum - 4;
                        InLongNote      = false;
                    }
                }
                //Debug.Log("NoteNum: " + NoteNum);
                newObj.Initialize(evt, NoteNum, this, gameController, isLongNoteStart, isLongNoteEnd);
                trackedNotes.Enqueue(newObj);
                //Debug.Log(trackedNotes.Count);
                pendingEventIdx++;
            }
        }