我有一个用C ++(QT)编写的自上而下的查看坦克项目。坦克由一个“基座”组成,通过一个转动点连接到“炮塔”,它可以旋转和射击。炮塔是一个圆形的形状和一个矩形作为枪管连接到它。相当基本。
当弹丸被射击时,其初始速度矢量应该加到枪管尖端的速度矢量上,否则如果坦克或枪管移动则射击是不现实的。我只能得到一个物体的速度矢量,而这里还不够,因为枪管尖端的速度矢量与炮塔体的速度矢量不同。
我试图将无夹具身体焊接到枪管的尖端作为“枪口”。枪口体速度矢量正是我正在寻找的那个。虽然它没有用,但由于某种原因,焊接的无夹具体限制了炮塔的旋转。
然后我对带有固定装置的身体做了同样的事情。它有效,但似乎过于复杂的解决方案,带来了新的问题。
我的问题是:
我不知道无夹具的身体有什么问题吗?为什么我不能将它们焊接到某处以便轻松访问该点的速度矢量?
是否有任何“标准”解决方案来获取灯具任意点的速度矢量?
丹尼尔
答案 0 :(得分:0)
我认为您正在寻找的功能是b2Body :: GetLinearVelocityFromWorldPoint https://code.google.com/p/box2d/source/browse/trunk/Box2D/Box2D/Dynamics/b2Body.h#273
你可以用b2Body :: GetWorldPoint获得枪管末端的“世界点”。
要在世界坐标中找到枪的方向,b2Body :: GetWorldVector可能会有用。
答案 1 :(得分:0)
经过一番研究后,我回答了自己的问题。
如果在没有任何灯具的情况下使用车身,请务必手动设置一些质量,否则会出现意外情况。在这样做之后,枪口身体的参数就是我正在使用它们。以下是如何在没有任何固定装置的情况下将质量设置为身体。
b2MassData md;
md.center = b2Vec2(0,0);
md.I = 0.000001f;
md.mass = 0.000001f;
body->SetMassData(&md);
其他解决方案可能是发布的iforce2d。谢谢你,我来看看吧!