gpt4 book ai didi

c++ - Box2D (C++) 重力井

转载 作者:搜寻专家 更新时间:2023-10-31 01:20:49 25 4
gpt4 key购买 nike

目前我正在我的游戏中使用 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 库有很大不同,但基本原理是相同的。这也不是一个完美的例子,但它可能会让你入门。

See The Flash Example

关于c++ - Box2D (C++) 重力井,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4363282/

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