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