box2d - 关于如何使用 box2d 创建精确的轨道重力有什么想法吗?

标签 box2d gravity

基本上,我正在尝试使用 box2d 创建一个精确的轨道重力系统;我希望能够在地球上发射一颗子弹,根据这颗子弹的飞行速度,它会逃离地球,留在地球周围的轨道上,或者以240度或45度的角度降落在地球表面。 (假设子弹会在 0 度处发射) 我做了很多研究,并且已经深入研究了牛顿等物理定律。 基本的 applyforce 似乎做得不够准确。 我还找到了计算物体留在轨道上所需速度的公式,并且我设法在 box2d 中实现了这一点。然而,如果我想阻止子弹,子弹就不会再落到地球上。 (施加力用于径向重力,第二个施加力用于将子弹移动到“右侧”)它将留在轨道上。只有添加阻尼,子弹才会落回地面,但这对我来说似乎是错误的。当子弹与其他物体碰撞时,它也会受潮。

我认为这里的主要问题是修改子弹的速度。子弹需要 x 时间才能降落,比如说:180 度。子弹距离地球表面越远,在相同时间内以 180 度着陆所需的速度就越大。我认为速度是实现真正精确的径向重力的关键,但我的问题是;这是真的吗,大家觉得怎么样,有人有类似的情况吗? 如何在不使用阻尼和设置线性速度的情况下以最合适的方式控制速度?

我还希望能够控制子弹绕轨道飞行、逃逸或降落在地球上所需的速度。这应该是可能的,因为还有一个计算轨道速度的公式。 例如。当出现问题时,子弹移动得太快,会逃离地球,但会向后移动,因为地球重力会改变子弹的路径。

顺便说一句:我确实在互联网上搜索了很多,但无法真正将这些内容链接到实用的 box2d 代码,所以我希望有人能给我指出正确的方向。 亲切的问候!

最佳答案

我找到了这个http://www.emanueleferonato.com/2012/03/28/simulate-radial-gravity-also-know-as-planet-gravity-with-box2d-as-seen-on-angry-birds-space/给出了一个很好的例子,使用 Box2D for ActionScript3 进行径向重力(行星重力),但可以轻松移植到 Box2D for C++。还有几个 Box2D 示例也可以用于执行其他技巧。

关于box2d - 关于如何使用 box2d 创建精确的轨道重力有什么想法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9862771/

相关文章:

javascript - 我怎样才能制作正方形?

java - 无论 FPS 如何,Box2D 以相同的速率移动物体

java - Android:以编程方式更改 TextView 位置(左或右)?

Android RadioGroup 按钮重力

java - 发送重力消息时出现错误#2173

c++ - 使用增量时间时如何保持跳跃高度相同?

c++ - 使用 Objective-C 和 C++ 避免并行数组

c++ - 堆栈帧中重复的内联构造函数导致 "pure virtual method called"?

c++ - Box2D:在 Helloworld.cpp 或类似的基本程序中使用 debugdraw?

android - 布局重力不适用于LayoutParams