gpt4 book ai didi

xna - 在 XNA 中计算重力

转载 作者:行者123 更新时间:2023-12-04 18:44:22 28 4
gpt4 key购买 nike

好吧,我正在尝试为 3D XNA 游戏创建自己的物理引擎,但我在计算我应该将物体移动多少时遇到重力问题。

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

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

问题是,如何将 0.15696 米转换为像素。显然,如果我只使用 1:1 的关系,对象将仅以 9.81 像素/秒的速度移动。这并不能真正模拟重力:P 有没有人知道如何确定我应该将对象移动多少像素?

感谢大家的帮助!

最佳答案

虽然 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;

在此示例中,我任意确定 1 xna 单位 == 1 米。

关于xna - 在 XNA 中计算重力,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5746118/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com