이것의 진정한 속임수는 고등학교 수준의 과학입니다. 당신 이 해야했던 빠른 검색을하지 않은 경우 Google 검색을 시작할 수 있습니다 . '초보자'사고 방식을 피하는 방법을 설명하려면 달 착륙선을 예로 들어 보겠습니다.
일단 [change in position] = [velocity] * [time passed]
변수를 추적해야한다는 것이 명확 해졌다는 것을 읽었습니다 .
float x, y; // Your X and Y co-ordinates.
float vx, vy; // Your X and Y velocity.
float deltaTime; // Change in time.
그런 다음 각 프레임의 위치에 속도를 적용하면됩니다.
// Change X by the velocity multiplied by the time.
x = x + vx * deltaTime;
y = y + vy * deltaTime;
이제 우리는 중력을 추가 할 수 있도록 각 프레임의 속도를 변경하고 싶습니다. 정확히 같은 출처에 따르면 [change in velocity] = [acceleration] * [time passed]
. 따라서 동일한 원칙을 적용 할 수 있습니다.
const float gravity = 9.8f; // The gravity of the earth.
// Add gravity to the vertical velocity.
vy = vy + gravity * deltaTime;
// Change X by the velocity multiplied by the time.
x = x + vx * deltaTime;
y = y + vy * deltaTime;
이제 플레이어가 우주선을 조종 할 수있는 방법이 필요합니다. 기본 물리학에 대한 자세한 내용을 읽어 보면 모션이 힘의 결과라는 것을 알게 될 것입니다 [change in acceleration] = ([force] / [mass]) * time
. 따라서 플레이어가 키를 누르면 단순히 변수 fx
와 fy
변수를 설정하고 업데이트 중에 방정식을 적용합니다.
궁극적으로 게임에서 객체 주위의 물리학에 대해 생각해야합니다. 생각하는 방식대로 움직이려고하는 대신 방정식을 찾아보십시오 .
미래 참고 사항 : 이것은 물리학을 수행하는 가장 좋은 방법은 아니라는 것을 기억하십시오 (이는 Euler 통합이라고하며 낮은 프레임 속도에서 이상한 시나리오가 발생할 수 있음)- 다른 일을하는 방법 을 조사해야합니다 (이 기사는 상당히 베어 기본에 대한 훌륭한 글쓰기). 그러나 지금은 Euler Integration을 고수하십시오. 즉, 한 가지 적은 것을 배우려고한다는 의미입니다.
올바른 사고 방식으로 생각하는 방법을 가르치는 게임은 무엇입니까?
올바르게하고 올바른 사고 방식으로 일을했는지 어떻게 테스트 하시겠습니까? Sleep(10 milliseconds)
게임 루프에를 삽입하면 모든 것이 여전히 전체 프레임 속도와 동일한 방식으로 이동하고 반응해야합니다.
마지막으로, 2D 게임 제작에 대한 충분한 경험이있을 때까지 3D (Quantions 및 Matrix 적용)로부터 멀리 떨어져 있어야합니다. 나는 꽤 많은 게임 개발자들이 실제로 쿼터니언이나 매트릭스가 어떻게 작동하는지 알지 못하지만 단지 그것들을 사용하는 방법을 알고있다가 나중에 훨씬 더 가까이 접근하거나 2D 게임이 너무 재미 있고 성공한). 기본 대수에서이 작업을 수행하기 위해 선형 대수 등을 알 필요는 없습니다 (그러나 실제로 도움이되므로 가능하면 일부 야간 수업으로 가십시오).
최종 보너스 : 나의 미술 선생님이 항상 나에게 한 말은 "당신이 생각 하는 것을 그리는 것이 아니라, 당신이 보는 것을 그리는 것"입니다. 동일한 일이 " 적절하게 생각 하는 것을 모델링하지 말고 ( object.position++
), 일어나는 일을 모델링하십시오 (`object.position + = velocity * time)"-최소한 합리적인 한계까지 (완벽하게 정확한 시스템을 모델링하지는 않지만, 좋은 모방 인 것).