2011-04-21 11 views
3

좋아요, 그래서 3D XNA 게임을위한 필자의 Physics 엔진을 만들려고합니다. 그리고 중력을 위해 내 대상을 얼마만큼 움직여야하는지 계산하는 데 문제가 있습니다. 일부 계산 후, 그래서XNA의 중력 계산하기

는 XNA의 게임 타이머, 매 16 밀리 초를 발생하고, 내 중력 속도로 9.81m/s의를 사용하여, 당신은 당신이로 비중이 물체의 속도 증가한다고 볼 수

0.15696를 미터/16milliseconds
- 기본적으로 모든 업데이트 호출은 0.15696 미터만큼 객체를 증가시켜야합니다.

질문은 픽셀로 0.15696 미터를 어떻게 변환합니까? 분명히 1 : 1 관계 만 사용하면 객체는 초당 9.81 픽셀 만 이동합니다. 중력을 실제로 시뮬레이트하지 않는 것은 어느 것입니까? P 객체를 얼마나 많이 움직여야할지 결정할 수있는 사람이 있습니까?

모든 도움에 감사드립니다!

+0

나만의 프레임 워크를 만드는 이유는 무엇입니까? – tomasmcguinness

+0

재미있게 :) 기본적으로 Xna에서 물리학을 가지고 노는 경험을 얻고 싶습니다. – cush

+0

좋은 대답 ;-) – tomasmcguinness

답변

5

2 차원 게임 개발자는 픽셀 중심적이지만 3 차원 게임 개발자는 이러한 종류의 픽셀에 대해 관심을 갖지 않습니다. 단위 크기는 완전히 임의적입니다.

일반적으로 속도가 객체의 진행 속도 인 초당 미터 (또는 피트 또는 ??)와 같습니다. 그렇게하면이 속도 * 마지막 프레임 (16.6666ms) 이후의 경과 시간을 추가하여 위치가 각 프레임마다 업데이트됩니다. 중력 가속도는 동일한 방식으로 속도 벡터에 추가된다 :이 예에서

Vector3 gravity = Vector3.Down * 9.81f; 


//in the update loop 
float elapsed = (float)gameTime.ElapsedGameTime.TotalSeconds;//0.01666667 (or 16.67 ms) @ 60FPS 
velocity += gravity * elapsed; 
position += velocity * elapsed; 

는 I 임의로 1 개 XNA 부 == 1 미터를 구축했다.

1

화면이 나타내는 "영역"의 크기를 알아 내면됩니다. 다음 간단한 스케일링. 궤도를 선회하는 위성을 2D로 표현한 경우, "Y"픽셀은 인공위성 지상 (약 35,000 미터)을 나타냅니다.

고전 물리학 (http://en.wikipedia.org/wiki/List_of_equations_in_classical_mechanics)에서 방정식을 사용한 다음 화면에 실제 크기를 축척합니다.