目前,我在我的一个游戏中使用 Box2D 物理引擎 - 我想知道是否可以创建一个重力井,其中所有物体都被吸引到一个任意点。有没有某种方法可以做到这一点,或者我必须对每个 body 施加某种自定义的力量? (我尝试制作静态超密体,但 Box2D 并未在体与体之间应用牛顿万有引力定律)
还有,有没有办法制作反重力井?我可以制作一个以任意点为中心的更密集的球体并使用浮力来实现这一点吗?
最佳答案
遗憾的是,Box2D 中并未内置此功能。最简单的事情是获取重力井和刚体之间的角度和距离,并相应地设置刚体的速度。
获取角度:
double dx = rigidBodyX - gravityWellX;
double dy = rigidBodyY - gravityWellY;
double angle = atan2(dy, dx);
// angle is in radians, use atan2(dy, dx) / PI * 180 if
// you need degrees
获取距离:
double dx = rigidBodyX - gravityWellX;
double dy = rigidBodyY - gravityWellY;
double dist = sqrt(dx * dx + dy * dy);
我使用 flash 和我编写的名为 QuickBox2D 的库编写了一个快速示例。它可能没有那么有用,因为语法与 C++ Box2D 库非常不同,但基本原理是相同的。这也不是一个完美的示例,但它可能会帮助您入门。
关于c++ - Box2D (C++) 重力井,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4363282/