본문 바로가기

유니티/리듬게임

(29)
[번외]노트판정 다른 방식의 구현 종강기념 주저리 글. 지난 노트판정 개발일지에서 두가지의 구현방식을 예를 들었는데 1. 노트와 판정선의 거리를 검사해 판정 2. 노트의 시간값을 검사해 판정 거리를 체크한다는 말은 노트의 trasform.position과 판정선의 transform.position을 비교하게 되는 것인데 (또는 콜라이더 를 통해 충돌 체크가 있겠으나, 이러한 물리연산은 부담이 크기 때문에 판정의 오차가 중요한 게임에서는 사용을 자제하는게 좋을 것이다.) Update 메소드안에서 돌고, Time.deltaTime값이 리듬게임 같이 매우 정확한 시간을 요구하는 게임에서는 부적절 하기 때문에(밀림 현상발생) 메트로놈을 다시 만들 때 당시, 오디오파일의 PCM샘플값을 이용했었다. 유니티 레퍼런스상에서는 Time보다는 정밀한 타이..
[개발일지15] 플레이 영상 실제 플레이 영상 컴퓨터로 녹화하지 않은 이유는 그냥.. 현장감에서 오는 재미이다. (1:53에 카메라 앵글이 내려가는 것은 절대 모니터 광고가 아니다) ※ 중간중간 어색한 부분은 원래 이 채보에 기믹(스탑노트 등)이 들어가 있어서 그렇다. 음악 B.B.K.K.B.K.K 작곡 nora2r 채보 LucidKarn
[개발일지14] 간단하게 UI UI를 처리하는 스크립트를 만들까 생각했었지만,일단 상황이 그럴만한 규모가 아니기 때문에 Score.cs에서 처리했다. (추후, 판단이 서면 바로 분리할 수 있음) 미스일때는 회색, 굿일때는 노란색, 그레잇일때는 파란색으로 바뀌도록 했다. 점점 갈수록 쉽고 간단해진다. (혼자의 착각일 수 있다.) 사실, 리듬게임에 있어서 가장 중요한 뼈대는 완성된 셈이니까. 최근에 작업한 것들은 뼈가 아닌 살을 붙이는 과정.
[개발일지13] 점수 간단하게, 점수 부여하는 메소드를 만들었다. Judgement.cs 에서 미스판정이 발생하면 Score.cs에서 처리하는 방식이다. 추후, 구체적인 점수 시스템이 확립되면 바뀔 예정.
[개발일지12] 노트판정 재설계 노트 판정을 구현하고 나서 QA를 열심히 해보는 중에, 문제가 있음을 발견했다. 분명 판정자체는 제대로 이루어지고 있었으나, 의도했던 특정상황의 판정이 전혀 발동하지 않았던 것이다. 예를들면 그레잇이 0.2초 굿이 0.5초 설정이 되어있다고 가정했을 때 + 0.5초에 눌러도 그레잇으로 판정이 되어버린 것이다. (- 상황에서는 굿이 제대로 적용되었다.) 이렇게 되면 플레이어가 막누른다는 가정하에 그레잇을 모조리 가져가게 될 것이다. 추가로, 막눌러도 점수를 얻어가지 못하게 하기 위해 추가 범위를 잡았다. (사실, 처음 코드를 짤때부터 염두했었던 상황인데 너무 빠르게 만든나머지 깜빡했었다.) 이제 정말 제대로 작동한다! 간접미스 추가는 기획에서 잡아야 될 것이다. 간접미스를 간략하게 설명하면 1번노트를 치기..
[개발일지11] 노트판정 구현 노트판정은 떨어지는 노트를 보고 키 입력을 해서 누른 타이밍에 따라 판정하는 시스템이다. 판정을 구현하는 방법은 노트와 판정바와의 좌표를 비교하는 것과 노트의 시간값을 비교하는 것이 있다. 또 다른 방법이 있을지 모르겠지만, 나는 노트의 시간값을 토대로 구현하기로 결정했다. 좀 더 정확하게 판정할 수 있을거라고 생각했기 때문이다. 구현 방식을 간략하게 표현해보면 1. 각 레인에 해당하는 노트의 시간값을 큐에 저장. 2. 노트의 시간값(큐의 첫번째 값)과 현재 음악의 시간과 비교하여 판정 차등 부여(미스,굿,그레잇) 3. 판정이 이루어지면 DeQueue 4. 이하 과정 반복 노트 시간값이 담긴 리스트를 큐에 복사. 미스, 굿, 그레잇과 같은 판정이 정확히 어느때 이루어지는지 알 필요가 있다. 미스는 키를 ..
[개발일지10] 키 입력받기 노트를 입력받기에 앞서 키를 누르는 행위를 먼저 구현할 필요가 있다. 판정바 밑에 오브젝트 6개를 만들고 파란색을 부여했다. 이것이 무엇인가 라고 궁금하다면 (정확한 명칭이 있는지 모르겠지만, 여기서는 키 패널이라고 이야기 할 것이다.) 키 패널은 플레이어가 키를 입력했을 때, 대응되는 오브젝트라고 보면 된다. 어느 키를 입력해야 될지 도움을 주기도 하며, 시각적인 효과를 담당하기도 한다. 여러가지 형태의 키패널들이 존재하는데, 평소에는 키패널의 모습이 보이지 않았다가, 키를 누르고 있으면 보이고 떼면 다시 사라지는 형태를 구현하고자 한다. 방법은 간단하다. 키를 입력받는 스크립트를 만들고 각 오브젝트를 불러와 비활성화 시켜둔다. 키를 누르거나 누르고있으면 오브젝트를 활성화 시켜서 모습을 보이게 하고, ..
[개발일지8] 중간 진행 상황 어느정도 리듬게임의 형태가 보이기 시작했으며, 싱크를 좀 더 다듬고 플레이어가 입력해서 점수화하는 기능을 구현할 예정.