Iphone 为什么';box2d中的t重力秤工作
我正试图关闭我身体上的重力。我使用了bodyDef.gravityScale=0.0f,但我运气不好。在这里你可以看到我的代码如下。请帮忙Iphone 为什么';box2d中的t重力秤工作,iphone,xcode,box2d,gravity,Iphone,Xcode,Box2d,Gravity,我正试图关闭我身体上的重力。我使用了bodyDef.gravityScale=0.0f,但我运气不好。在这里你可以看到我的代码如下。请帮忙 b2BodyDef monkey1BodyDef; monkey1BodyDef.position.Set(0, 200/PTM_RATIO); monkey1BodyDef.type = b2_dynamicBody; monkey1BodyDef.userData = monkey1; monkey1BodyDef
b2BodyDef monkey1BodyDef;
monkey1BodyDef.position.Set(0, 200/PTM_RATIO);
monkey1BodyDef.type = b2_dynamicBody;
monkey1BodyDef.userData = monkey1;
monkey1BodyDef.bullet = true;
monkey1BodyDef.gravityScale = 0.0f; //Why doesn't this work I get an error that says no member named 'gravityScale' in 'b2BodyDef'
b2Body *monkey1Body = world->CreateBody(&monkey1BodyDef);
更改世界的重力定义,因为它是具有重力的世界,如下所示:
b2Vec2 gravity = b2Vec2(0.0f, -10.0f);
bool doSleep = false;
world = new b2World(gravity, doSleep);
世界是
b2World
改变重力对世界的定义,因为有重力的是世界,如下所示:
b2Vec2 gravity = b2Vec2(0.0f, -10.0f);
bool doSleep = false;
world = new b2World(gravity, doSleep);
World是b2World,因为“b2BodyDef”中不存在名为“gravityScale”的成员:(
与代码相比,文档已过时,因为“b2BodyDef”中不存在名为“gravityScale”的成员:(
与代码相比,文档已经过时了我也遇到了这个问题。经过一点挖掘,我发现稳定的Cocos2D版本不包括最新版本的Box2D,因此b2BodyDef中缺少gravityScale。这解释了与Box2D文档的差异 有一些解决办法,但我选择将我的Box2D更新为2.2.1(目前是最新版本)。在这样做的过程中,我遇到了以下问题(包括解决方案):
// Debug Draw functions
m_debugDraw = new GLESDebugDraw( PTM_RATIO );
_world->SetDebugDraw(m_debugDraw);
uint32 flags = 0;
flags += b2DebugDraw::e_shapeBit;
flags += b2DebugDraw::e_centerOfMassBit;
m_debugDraw->SetFlags(flags);
// Debug Draw functions
m_debugDraw = new GLESDebugDraw( PTM_RATIO );
_world->SetDebugDraw(m_debugDraw);
uint32 flags = 0;
flags += b2Draw::e_shapeBit;
flags += b2Draw::e_centerOfMassBit;
m_debugDraw->SetFlags(flags);
void GLESDebugDraw::DrawTransform(const b2Transform& xf)
{
b2Vec2 p1 = xf.position, p2;
const float32 k_axisScale = 0.4f;
p2 = p1 + k_axisScale * xf.R.col1;
DrawSegment(p1,p2,b2Color(1,0,0));
p2 = p1 + k_axisScale * xf.R.col2;
DrawSegment(p1,p2,b2Color(0,1,0));
}
void GLESDebugDraw::DrawTransform(const b2Transform& xf)
{
b2Vec2 p1 = xf.p, p2;
const float32 k_axisScale = 0.4f;
p2 = p1 + k_axisScale * xf.q.GetXAxis();
DrawSegment(p1,p2,b2Color(1,0,0));
p2 = p1 + k_axisScale * xf.q.GetXAxis();
DrawSegment(p1,p2,b2Color(0,1,0));
}
我希望这能有所帮助!我也遇到了这个问题。经过一点挖掘,我发现稳定的Cocos2D版本不包括最新版本的Box2D,因此b2BodyDef中缺少gravityScale。这解释了与Box2D文档的差异 有一些解决办法,但我选择将我的Box2D更新为2.2.1(目前是最新版本)。在这样做的过程中,我遇到了以下问题(包括解决方案):
// Debug Draw functions
m_debugDraw = new GLESDebugDraw( PTM_RATIO );
_world->SetDebugDraw(m_debugDraw);
uint32 flags = 0;
flags += b2DebugDraw::e_shapeBit;
flags += b2DebugDraw::e_centerOfMassBit;
m_debugDraw->SetFlags(flags);
// Debug Draw functions
m_debugDraw = new GLESDebugDraw( PTM_RATIO );
_world->SetDebugDraw(m_debugDraw);
uint32 flags = 0;
flags += b2Draw::e_shapeBit;
flags += b2Draw::e_centerOfMassBit;
m_debugDraw->SetFlags(flags);
void GLESDebugDraw::DrawTransform(const b2Transform& xf)
{
b2Vec2 p1 = xf.position, p2;
const float32 k_axisScale = 0.4f;
p2 = p1 + k_axisScale * xf.R.col1;
DrawSegment(p1,p2,b2Color(1,0,0));
p2 = p1 + k_axisScale * xf.R.col2;
DrawSegment(p1,p2,b2Color(0,1,0));
}
void GLESDebugDraw::DrawTransform(const b2Transform& xf)
{
b2Vec2 p1 = xf.p, p2;
const float32 k_axisScale = 0.4f;
p2 = p1 + k_axisScale * xf.q.GetXAxis();
DrawSegment(p1,p2,b2Color(1,0,0));
p2 = p1 + k_axisScale * xf.q.GetXAxis();
DrawSegment(p1,p2,b2Color(0,1,0));
}
我希望这有帮助!如果
body.setGravityScale(0);
不起作用,您可以将其与第二行的body.setAwake(false);
一起使用。如果body.setGravityScale(0);
不起作用,您可以与第二行的body.setAwake(false);
一起使用