본문 바로가기
스크래치/스크래치 리듬게임

리듬게임 만들기3. 판정만들기

by 할거없네 2017. 12. 22.

이번에는 리듬게임에서 판정하는 부분을 만들어 줄 차례입니다. 판정을 위한 부분은 단순히 키를 눌렀을 때 가장 가까운 노트의 위치와의 오차를 확인하는 것으로 만들어 줄 수 있습니다. 그 다음에 해당 판정에 따른 점수를 부여하고 효과 애니메이션을 만들어 주는 순서가 되겠습니다.

▲ 판정에 따라서 점수와 애니메이션 구현을 해본다.





1. 노트의 위치에 따른 판정 만들어 주기

이번에는 노트가 적당히 라인(y=-120)에 들어왔을 때 키를 누르면 오차를 확인하여 판정하고 점수를 주는 시스템을 도입할 예정입니다. 여기서는 다시 키 부분의 스크립트를 추가 수정해주어야 합니다



일단 a라인에서의 판정 부분입니다. 키를 누르면 가장 가까운 노드(node_a)y좌표와의 오차가 0.2이하이면, 또는 0.5이하이면 등의 조건에 따라서 점수와 판정 애니메이션을 위한 리스트(rank_list)를 추가합니다.

여기서 1이면 1라인에서 1랭크, 11이면 1라인에서 2랭크 등의 판정으로 하기로 하였습니다. 현재 스크립트에서는 miss판정이 없는데, miss가 되면 점수와 이펙트 없이 노드가 사라지는 것으로 되어 있습니다.

2. 랭크 애니메이션 만들기



이제 랭크에 따라서 이펙트를 만들어 줄 차례입니다. 먼저 랭크 애니메이션을 위한 스프라이트를 하나 만들어 줍니다.



모양은 적당히 동그라미가 점점 커지는 모양이 되었고, 애니메이션이 수행되면 r1, r2, r3로 변화하다가 사라지는 것으로 애니메이션을 구현해 줄 예정입니다.


이렇게 순간적으로 발생했다가 사라지는 애니메이션은 '복제하기'를 통해 만들어 줄 것입니다. 따라서 원본은 '숨기기'를 하고, 조건이 부합되면 복제하도록 합니다. 여기서

복제하는 조건은 'rank_list'에 어떤 값이 추가 되면 복제를 합니다. 그리고 그 복제본은 해당 값에 따라서 위치와 종류가 결정되도록 되어 있습니다. 그 값은 @rank_type에 저장하고 해당 리스트를 삭제함으로써 리스트 추가로 복제하기를 만들어 줄 수 있습니다.



해당 애니메이션은 애니메이션을 수행하고 사라지는 개체이기 때문에 반복문 없습니다.



먼저 타입에 따라서 각 라인에 위치하게 됩니다. 예를 들어 1이면 a라인의 1랭크의 효과를 만들어 줍니다. 2이면 b라인의 1랭크가 되구요. 10으로 나눈 것은 1의 자리 값을 보기 위함입니다. 1의 자리의 숫자가 어떤 라인에서 만들어 줄 지를 결정해 줍니다.

그리고 10보다 크게 되면 2번째 랭크의 효과로써 색깔 효과를 150만큼 바꿉니다. 노트 터치시 1랭크이면 파란색, 2랭크이면 초록색이 됩니다.

다음은 애니매이션 효과가 되는데요, 모양을 순서대로 바꿔줍니다. 모양을 바꾼 후 마지막 5번의 반복으로 점점 투명해지면서 사라지도록 하였습니다.




스크립트 보러가기:

https://scratch.mit.edu/projects/193098563/


댓글