为什么我的线速度会回到0,尽管我的重力似乎已经设定好了
Why is my linear velocity coming back as 0 even though my gravity appears set
我正在使用Box2D,并将一些代码从旧版本移植到新版本。在旧版本中,一切都很好,但在新版本中,重力似乎不会影响LinearVelocity。我做错了吗?
好的,这是代码。。。
创造我的世界(gx=0 gy=-10)。。。
b2Vec2 gravity;
gravity.Set(gx, gy);
LOGD("Gravity set to %f, %f", gx, gy);
world = new b2World(gravity);
创建正文。。。
b2BodyDef bd;
bd.type = b2_dynamicBody;
bd.position.Set(x, y);
b2Body* b = world->CreateBody(&bd);
b2PolygonShape pd;
b2Vec2 center;
center.Set(x, y);
pd.SetAsBox(width, height, center, angle);
b2FixtureDef fixtureDef;
fixtureDef.shape = &pd;
fixtureDef.density = density;
fixtureDef.friction = 0.3f;
b->CreateFixture(&fixtureDef);
但当我走过我的步伐。。。
LOGD("Gravity is %f", world->GetGravity().y);
world->Step(dt, iterations, iterations);
for (b2Body* b = world->GetBodyList(); b; b = b->GetNext())
{
b2Vec2 position = b->GetPosition();
float32 angle = b->GetAngle();
float32 yVelocity = b->GetLinearVelocity().y;
LOGD("Stepping %4.2f %4.2f %4.2f %f n", position.x, position.y, angle, yVelocity);
}
旧的控制台输出是(两者都包括接地盒)。。。
D/Native ( 4243): Stepping 0.00 -1.02 0.00 -0.500000
D/Native ( 4243): Stepping 0.00 0.00 0.00 0.000000
D/Native ( 4243): Stepping 0.00 -1.06 0.00 -1.000000
D/Native ( 4243): Stepping 0.00 0.00 0.00 0.000000
D/Native ( 4243): Stepping 0.00 -1.13 0.00 -1.500000
D/Native ( 4243): Stepping 0.00 0.00 0.00 0.000000
这里的一切看起来都很平和,但在我的房间里,事情变得很奇怪。。。
D/Native ( 4310): Stepping 0.00 -0.86 0.02 -0.000000
D/Native ( 4310): Stepping 0.00 -10.00 0.00 0.000000
D/Native ( 4310): Stepping 0.00 -0.73 0.04 0.000000
D/Native ( 4310): Stepping 0.00 -10.00 0.00 0.000000
D/Native ( 4310): Stepping 0.00 -0.60 0.05 0.000000
D/Native ( 4310): Stepping 0.00 -10.00 0.00 0.000000
正如你所看到的,除了有一个角度(原来的角度没有)之外,在y方向上没有线速度。我在这里错过的东西发生了变化吗?
顺便说一句,这是他们创造世界的旧方式,他们的代码也不使用固定装置,只使用形状。。。
b2AABB aabb;
aabb.lowerBound.Set(x1, y1);
aabb.upperBound.Set(x2, y2);
b2Vec2 gravity;
gravity.Set(gx, gy);
world = new b2World(aabb, gravity, canSleep);
看起来边界框已经过时了,所以我不确定是否有办法在Box2D中使用负位置。因此,对我来说,我必须将所有对象移动到地面1,并相应地更新我到OpenGL的转换。我仍然不能100%确定这是最终的答案,所以我不会接受,我希望有人能给出更好的答案。
相关文章:
- 我的神经网络不起作用 [XOR 问题]
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 我的字符计数代码计算错误.为什么
- 为什么我的C#代码在调用回C++COM直到Task时会暂停.等待/线程.加入
- cmake在我的项目中所需的所有静态库都不成功
- 为什么我的代码在输出中增加了93天
- 我的简单if-else语句是如何无法访问的代码
- 为什么我的for循环不能正确获取argv
- 奇怪的(对我来说)返回声明 - 在谷歌上找不到任何关于它的信息
- 我的项目不会像"undefined reference to `grpc::g_core_codegen_interface'"那样使用未定义的引用错误进行编译
- 0-1背包代码中的错误.我的代码中有什么错误
- 当我的阵列太大时出现分段错误
- 如何确认我的constexpr表达式实际上已经在编译时执行
- 为什么二进制搜索在我的测试中不起作用
- 如何指定我希望我的LIB链接到的DLL文件?-Visual Studio 2019
- 我的代码中有错误吗?使用BGI图形的C++代码对我不起作用
- 当我在main中声明了我的2d数组时,为什么我的程序会退出
- OpenGL在启用深度测试时不会丢弃我的碎片
- 为什么我的 std::ref 无法按预期工作?
- 是什么导致了我的错误?我试图创建一个球员类和存储球员的名字作为一个变量