[펌] BPM 계산 방식과 배속의 구현 방법
출처: http://beatup.springnote.com/pages/3277191
BPM : beat per min 의 준말. 즉 분당 비트수로써 1분당 1/4박자의 갯수이다.
- 1분당 BPM별 비트 갯수
즉, 우리가 만들 게임은 1/32박자 (이하 32비트) 게임이므로
155bpm시 1분당 최대 1240개의 노트가 들어간다.
이제 노트 하나당 간격을 알아보도록 하자.
60bpm에서 4비트는 1초마다 1비트가 올라가므로 최대 60개가 나온다.
그럼 1/8박자는 0.5초마다, 16박자는 0.25초마다, 32박자는 0.125초마다 1비트가 오른다.
130bpm의 32비트는 최대 1040개이므로 비트 하나당 간격을 알아보자.
소수점자리까지 사용하므로 총 8자리까지 쓰고 이하는 반올림을 기준으로 한다.
노트는 0.05869230초마다 나오며 이 값이 맞는지 최대 비트인 1040개와 계산을 해보자
얼추 60이 맞는것을 알수 있다.
더 낮은 자리까지 계산을 하면 정확해지며 이게 정확하지 않다면 음악이 재생시간이
길어질수록 비트는 조금씩 밀리거나 당겨지는 현상이 있을수가 있으므로 주의하기 바란다.
이 문제를 해결하려면 10초마다 실행하는 타이머를 주어 다음 10초간의 비트의 위치를
부분적으로 계산하면 될듯싶다.
60bpm시 부분 계산 방식
화살표(노트) 이동 속도의 구현
60bpm은 매우 느린 속도이다.
120bpm은 60bpm의 2배의 속도이다.
180bpm은 60bpm의 3배의 속도이다.
픽셀은 구현이 어떤식으로 되는지 모르기에 예를 든것이다.
구현 방법에 따라 적절히 하도록 바람.
여기까지 bpm 계산 방법을 알아 보았다.
이제 배속의 구현을 알아보도록 하자.
먼저 bpm 공식에 의거하여 노트는 기본적인 이동속도를 가진다.
이것은 1배속이 된다.
60 bpm이 0.00166667 초에 1픽셀을 이동하는데
만약 2배속일경우엔 0.00083333 초에 1픽셀을 이동한다.
그러나 배속은 비트에 대해 절대 영향을 끼치지 않으며 단순히 이동속도만을 제어한다.
'Unity3D > Tips' 카테고리의 다른 글
[펌] 유니티 최적화 : 아트 리소스 최적화 기법들 (0) | 2016.08.30 |
---|---|
[링크] APK용량 줄이기, 이미지 압축 (0) | 2016.08.09 |
[펌] Unity3d 텍스쳐 압축 플러그인 ChromaPack (2) | 2016.07.04 |
[펌] 유니티 ChromaPack 텍스처 압축 (0) | 2016.07.04 |
[펌] 개선된 디더링 방식 (16비트 텍스쳐) dither4444 (0) | 2016.07.04 |