2012-06-09 9 views
2

XNA에서 전통적인 리듬 게임을 만들고 있는데, 가이드 노트와 노트 간의 거리를 계산하는 간단한 수식이 있습니다. 음표의 속도뿐만 아니라 음표가 지침 음을 타격하도록 지정된 시간과 관련하여 음표를 표시합니다. 문제는 노트가 지정된 것보다 1 ~ 2 초 이전에 가이드 노트를 통과한다는 것입니다. 이 노트는 프레임 1 픽셀 씩 움직이며 윈도우가 활성화되면 노트가 예상보다 조금 더 빨리 움직이고 가이드 노트를 일찍 전달합니다. 창문이 비활성 상태 일 때 (필자는 작업 표시 줄에 초점을 맞추어 게임을 볼 수있게되었습니다) 노트는 지정된 시간에 정확하게 안내 노트에 도착합니다. 내가 명확하지 않다는 것을 알게되면 가능한 한 자세하게 설명하려고 노력할 것입니다! 고맙습니다! 나는 FPS가 또한 공식에서 친척다는 것을 언급하는 것을 잊었다.Xna C# - 창이 활성화되어있을 때 리듬 게임 음악이 동기화되지 않음

+0

우연히 고정 게임 시간을 사용하고 있습니까? (Fixed FPS) –

+0

답장을 드려 죄송합니다. 고정 FPS를 실행 중입니다. FPS는 또한 공식에 사용됩니다. 이 점을 언급하지 않아서 유감입니다. –

+0

마지막 프레임을 그린 이후로 시간을 기준으로 모든 것이 업데이트되어야한다고 들립니다. 그런 식으로 FPS가 무엇인지는 중요하지 않습니다. –

답변

1

당신이 동기화 문제를 겪고있는 이유는 게임이 FPS를 기반으로한다는 사실입니다.

GameTime 클래스를 사용하면 노트를 관리 할 수 ​​있습니다. 프레임 속도는 언제든지 가비지 수집을 통해 언제든지 삭제 될 수 있기 때문입니다.

그리고 더 이상 동기화 문제가있는 경우 MediaPlayer는 TimePosition이라는 속성이 있습니다.이 속성은 노래 위치가 어디인지 나타내는 TimeSpan입니다.

이 정보가 도움이되기를 바랍니다.