2D 기반의 게임의 경우
안드로이드 기반의 폰은 물론....
PC기반의 게임도 해상도가 바뀌면 그에 따라 좌표값이 변화합니다.
이에 따라 가속도값과 속도값을 변화를 주어야 하는데
간단한 공식으로 나타내 봅시다.
=======================================================
일단 가장 기본이 되는 식은
St = vt + S0
시간과 속도에 따른 위치값입니다. ㅇㅇ
여기에 스케일값인 b를 곱한다고 하면
bSt = b(vt + S0 )
가 됩니다.
이제 속도를 따져보죠
vt = at + v0 입니다. (a는 가속도)
이제 이 식을 앞서 썼던 식에 대입을 하면
bSt = b(at2 + v0 t + S0 ) 이 됩니다.
가로를 풀면
bSt = bat2 + bv0 t + bS0
이렇게 됩니다.
================================================
bSt = bat2 + bv0 t + bS0
640 * 480 에서 800 * 600으로 해상도를 올린다고 가정해 봅시다.
그러면 1.25배를 확대하는 것이므로
스케일값 b는 1.25가 됩니다.
따라서, 속도와 가속도 모두 1.25배를 해줘야 하는 것입니다.
쓰고 나면 간단한 건데....
머리속으로 생각하다보면 헷깔릴 수 있는 일이기도 합니다.
딱, 위의 식에서 b가 붙어있는 것만 처리해줘야 합니다.
자칫, 실수하면 b를 중복으로 곱할 수 있죠
가속도 1번, 초기속도 1번, 초기위치 1번...
딱 이렇게 스케일 주어야 합니다.
그 외에 주면 중복이 되어버리는 거죠.
제가 했던 실수가
현재위치 = 직전위치 + 속도
이런식으로 Move함수를 만들 때
속도에다가 스케일값을 줘버렸고....
S = S + bV 이런식으로 스케일 처리한답시고 말이죠
앞에서 가속도에 또 줬으니...중복처리가 되는거죠.
그래서 공은 튀기고.... 코드를 다 읽어도 틀린 부분은 안나오고 ㅇㅇ
========================================================
결론은
초기 위치, 초기 속도, 가속도(중력)입니다.
ㅇㅇ