Tick에 대한 이해-(PC의 성능에 상관없이 같은 속도로 움직이게 한다.)

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게임만들기 공부하다가 ㅎㅎㅎ 

이 글을 공유하기

댓글

Designed by JB FACTORY