2013-05-22 6 views
2

내 게임에서 플레이어를 그리려면 requestAnimationFrame을 사용하고 있습니다. 플레이어 중 하나가 다른 모든 것보다 빠르게 움직입니다. 나는 그와 함께 약간의 점검을했고, 그의 모니터는 120hz 재생 빈도를 가지고 있다고 나에게 말했다. 나는이 수단이 다른 것들보다 빠른 프레임을 처리 할 수 ​​있다고 가정하고있어 더 빠른 이동 속도를 가져온다. 이 문제를 어떻게 해결할 수 있을지에 대한 아이디어가 있습니까?requestAnimationFrame 새로 고침 빈도

감사

사용되는 심 층은 다음과 같습니다 :

// shim layer with setTimeout fallback 
window.requestAnimFrame = (function(){ 
    return window.requestAnimationFrame  || 
      window.webkitRequestAnimationFrame || 
      window.mozRequestAnimationFrame || 
      window.oRequestAnimationFrame  || 
      window.msRequestAnimationFrame  || 
      function(/* function */ callback, /* DOMElement */ element){ 
      window.setTimeout(callback, 1000/60); 
      }; 
})(); 
+0

그리기 루프에 게임 논리를 넣지 마십시오. 그리기 코드는 게임 상태를 폴링해야하며 별도의 루프에서 업데이트됩니다. – apsillers

+0

또한 120Hz 재생 빈도는 실제 모니터가 픽셀을 업데이트 할 수있는 비율입니다. 사용자의 브라우저가 그리기 상태를 업데이트 할 수있는 속도는 아마도 훨씬 느릴 것이며 CPU 성능, 메모리, 버스 속도 등으로 제한 될 것입니다. – apsillers

+0

감사합니다. 두 개의 루프가 있습니다. 하나는 드로잉 용이고 다른 하나는 게임 로직을 업데이트하는 루프입니다. – jskidd3

답변

0

requestAnimationFrame는 더 보장 비율이 없습니다. 원하는 경우 2Hz로 발사 할 수 있습니다.

게임 루프 기능을 통화 간 시간에 독립적으로 만들어야합니다. 대부분의 게임은 렌더링 단계 사이를 지나는 밀리 초 수를 계산 한 다음 시간 경과에 따라 게임 개체에 애니메이션을 적용하여이 작업을 수행합니다.

0

requestAnimationFrame을 업데이트/다시 그리기의 기회로 생각하십시오. 당신은 여전히 ​​얼마나 많은 시간이 경과했는지에 대한 업데이트 프로세스를 기반으로해야합니다. 예를 들어

, 선수 1 초에 100 픽셀을 이동할 수 있으며, RAF 당신이 때마다

관련 문제