(25/07/17) 리듬게임 구현 구상

허윤·2025년 7월 17일


(출처 : https://www.youtube.com/watch?v=x23PlcMRfRg&ab_channel=DJMAXOfficial)

        protected bool[,] patterns = new bool[200,3];
        protected char[] keys = new char[3];
        protected List<Queue<bool>> visualizedNote = new List<Queue<bool>>();
        public virtual void CheckInput()//업데이트 실행,노트판별
        {
            if (currIndex < 0 || currIndex<= patterns.Length) return;  //인덱스가 0 미만 혹은 
            currIndex++;
            bool noAttack = true;
            for (int i = 0; i < patterns.GetLength(0); i++)
            {
                if (patterns[currIndex, i] /*&& keys와 현재 인풋을 비교*/)
                {
                    noAttack = false;
                    stateMachine.StateChange(StateType.Attack);
                }//YOON : 추후 UI 혹은 gameobject 추가시 
            }

            if (!noAttack)
            {
                stateMachine.StateChange(StateType.Idle);
            }
        }

        public virtual void PrintNotes()//업데이트 실행
        {
            if (visualizedNote.First().Count <= 0) return;//스텍 언더플로우 방지
            if (currIndex < 0) currIndex++;
            
            for (int i = 0; i < visualizedNote.Count; i++)
            {
                visualizedNote[i].Dequeue();//YOON : 추후 UI 혹은 gameobject 추가시 
            }
        }
        protected void NoteVisualize()//Init용
        {
            
            for (int i = 0; i < patterns.GetLength(0); i++)
            {
                for (int j = 0; j < patterns.GetLength(1); j++)
                {
                    if (visualizedNote.Count <= i) visualizedNote.Add(new Queue<bool>());
                    visualizedNote[i].Enqueue(patterns[i, j]);
                }
            }
        }

구상까지의 생각의 흐름

타격지점까지 오는 노드를 생성하고 타격지점 타이밍에 키 인풋을 받아 공격,피격 로직을 수행한다
단 이 구상에서 전제되어야 하는 조건이 하나 있는데
노드 생성 프레임 + (도착시점 -생성시점) == 노드 도착 호출 딜레이*횟수 이어야 한다는 점 이다
이를 개선해봐야 할 것 같다.

profile
C# 클라이언트 프로그래밍 지망

0개의 댓글