이번 포스팅은 기존의 라인에서 더 많은 라인으로 추가하는 부분과, 노트를 생성하기 위한 데이터 관리를 만들 차례입니다.
▲ 이제 여러개 라인으로 추가해보도록 합니다.
1. 키 확장하기
기존에는 라인이 a 하나였지만 이제 나머지 s, d, f라인을 추가할 차례입니다. 이미 a라인을 만들었기 때문에 라인을 더 추가하는 것은 복사 붙인 후 변수들이 중복되는 것을 방지하도록 해주어야 할 것입니다. 라인이 추가되는 부분은 키와 노트부분이 되겠습니다. 먼저 키부분을 살펴보면 기존에 'a'키를 누르면 다음과 같이 노트의 위치에 따른 판정을 하도록 되어 있습니다.
위 그림을 보시면 빨간색 부분이 s, d, f로 추가되면서 바뀌어야 할 부분들입니다. 각각 변수와 리스트들을 추가적으로 만들어서 각각 변수로 바꿔주면서 추가를 해줍니다.
이렇게 각각 블록을 만들어 주고 이제 키 입력 부분에 똑같이 추가하도록 합니다.
키 입력부분은 이미 민들어 져 있는 부분에서 추가적으로 변수를 만들고 복사 붙이기 함으로써 확장이 끝납니다.
2 노트 라인 확장하기
다음은 노트가 다른 라인에서 떨어지도록 만들어줄 차례입니다.
여기서 node_list는 노트의 데이터블록으로 이후에 설명될 예정입니다. 다음으로 초기값과 복제생성을 위한 블록이 순차적으로 실행됩니다.
먼저 초기값부분에서 a가 아닌 다른 라인들(s, d, f)들도 각각 추가해서 동일하게 추가시켜 줍니다. 이전에서는 없었던 새로운 변수도 볼 수 있는데요, (node_number_shift)는 노트를 복제하는 개수를 정해주는 변수입니다. 여기서 10개로 한 것은 각 라인에 표시되는 노트는 최대 10개가 되는 것입니다. 미리 10개를 복제해 놓고 자신의 차례가 되면 보여주는 방식으로 사용하기 위한 수단인데, 이렇게 만드는 이유는 복제하는 렉을 감소시키고 화면에서 복제되는 개수를 제어할 수 있기 때문입니다. 만약에 이 방법이 어렵고 이해되기 어렵다면 단순히 복제하기를 기본적으로 쓰셔도 무방합니다.
노트가 만들어질 복제하기는 미리 생성이 됩니다. 각 라인당 10개씩 미리 만들어 놓습니다. 복제될 때 자신의 라인에서 @a, @s, @d, @f 값을 1에서 10까지 부여받게 됩니다.
복제된 노트들은 이제 자신의 타이밍에 따라서 화면에 보여지게 되고 아래로 이동하게 됩니다.
이미 초기값에서는 자신의 라인에 따라서 x위치는 정해져 있습니다.
노트들의 위치는 각 리스트 번호에서 시간에 따른 위치로 정해진 것입니다. a라인은 이미 만들어 보았기 때문에 나머지 라인들도 동일하게 복제하여 각각의 리스트로 수정하여 적용합니다.
노트 삭제 조건도 추가됩니다. 기존의 방법과 수정이 되었는데, 복제본 삭제되신 node_remake블록으로 이미 복제되어 있는 노트를 다음 노트로의 순번 대기를 시켜서 화면에 나와야 할 조건이 되기 까지 기다리도록 만들었습니다.그러면 복제본 만들기와 생성하기를 서로 하지 않기 때문에 생성렉은 발생하지 않게 됩니다. 물론 만들기 위한 방법은 좀 더 복잡하기 때문에 단순히 삭제시키고 다시 복제본을 만드는 방식을 써도 무방할 것입니다.
이제 노트 리스트에 a, s, d, f라인에 각각 데이터를 추가해서 넣어주면 노트가 다른 라인에도 떨어지는 것을 볼 수 있습니다.
스크립트 보기:
https://scratch.mit.edu/projects/193442487/
'스크래치 > 스크래치 리듬게임' 카테고리의 다른 글
리듬게임 만들기5. 노트 데이터 넣기(끝) (0) | 2017.12.27 |
---|---|
리듬게임 만들기3. 판정만들기 (0) | 2017.12.22 |
리듬게임 만들기2. 노트 스프라이트 만들기 (0) | 2017.12.17 |
리듬게임 만들기1. 키부터 만들어 보자 (3) | 2017.12.17 |
댓글