在XNA中计算重力

cus*_*ush 3 xna

好吧,所以我正在尝试为3D XNA游戏创建自己的物理引擎,而且我在计算我应该为重力移动物体的数量方面遇到了麻烦.

XNA的游戏计时器每16毫秒发生一次,所以经过一些计算,并使用9.81m/s作为我的引力速度,你可以看到你应该通过以下方式增加具有引力的物体的速度:

0.15696米/ 16毫秒
- 基本上每次更新调用都应该将对象增加0.15696米

问题是,如何将0.15696米转换为像素.显然,如果我只使用1:1的关系,对象将只移动9.81像素/秒.这并不真正模拟引力:P有没有人对如何确定我应该移动对象的像素有一个好主意?

感谢您的帮助!

Ste*_*e H 5

虽然2D游戏开发更像素为中心,但3D游戏开发并不关心这类东西的像素,而是单位.单位大小完全是任意的.

通常,您有一个速度向量,其大小等于您的对象每秒的米(或英尺或??).这样,通过添加此速度*自上一帧(16.6666毫秒)以来经过的时间,每帧更新位置.来自重力的加速度以相同的方式添加到速度矢量:

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;
Run Code Online (Sandbox Code Playgroud)

在这个例子中,我任意确定1 xna单位== 1米.