Tick에 대한 이해-(PC의 성능에 상관없이 같은 속도로 움직이게 한다.)
- 프로그래밍/프로그래밍일반
- 2011. 1. 26. 10:56
PC의 성능에 상관없이 같은 속도로 움직이게 한다.
1. 값을 기억할 변수를 생성
2. 매 프레임마다 틱값계산
3. 플레이어가 이동할때 곱한다.
4. 총알도 이동할때 곱한다.
1. 값을 기억할 변수를 생성
FLOAT t = .0f;
DWORD dwOldTime = 0;
이동에 곱해야 할틱값(t)을 저장할변수와
지나간 시간을 기억할 변수이다.
2. 매 프레임마다 틱값계산
t = (timeGetTime() -dwOldTime) *.001f;
dwOldTime = timeGetTime();
프레임마다 시간간격을 얻는다.
이 시간간격만큼 이동하면, PC에 상관없이
동일하게 움직이기를 할수있다.
3. 플레이어가 이동할때 곱한다.
if (GetKeyState(VK_LEFT) & 0x80000000)
{
vecPosition.x -= 500.0f * t;
}
if (GetKeyState(VK_RIGHT) & 0x80000000)
{
vecPosition.x += 500.0f * t;
}
if (GetKeyState(VK_UP) & 0x80000000)
{
vecPosition.y -= 500.0f * t;
}
if (GetKeyState(VK_DOWN) & 0x80000000)
{
vecPosition.y += 500.0f * t;
}
이동하는 모든 물체는 t값을 곱해야한다.
4. 총알도 이동할때 곱한다.
if ( g_Bullet[i].Visible == TRUE )
{
g_Bullet[i].Position.y -= 250f * t;
}
날자고도님께서 만드신 2D게임만들기 공부하다가 ㅎㅎㅎ
이 글을 공유하기