Cocos2d iphone 用定距接头连接两个圆
我正在使用cocos2d和box2d,我正在尝试生成两个圆,这是我用这段代码做的Cocos2d iphone 用定距接头连接两个圆,cocos2d-iphone,Cocos2d Iphone,我正在使用cocos2d和box2d,我正在尝试生成两个圆,这是我用这段代码做的 b2BodyDef bodyDef[2]; b2Body *body[2]; for (int i=0; i<=1; i++) { bodyDef[i].type = b2_dynamicBody; bodyDef[i].position.Set(((i+1)*blobSize)/PTM_RATIO,((i+1)*blobSize)/PTM_RATIO); body[i] = wo
b2BodyDef bodyDef[2];
b2Body *body[2];
for (int i=0; i<=1; i++)
{
bodyDef[i].type = b2_dynamicBody;
bodyDef[i].position.Set(((i+1)*blobSize)/PTM_RATIO,((i+1)*blobSize)/PTM_RATIO);
body[i] = world->CreateBody(&bodyDef[i]);
// Define another box shape for our dynamic body.
b2CircleShape circle;
circle.m_radius = (blobSize)/PTM_RATIO;
// Define the dynamic body fixture.
b2FixtureDef fixtureDef;
fixtureDef.shape = &circle;
fixtureDef.density = 1.0f;
fixtureDef.friction = 0.4f;
fixtureDef.restitution = 0.2f;
body[i]->CreateFixture(&fixtureDef);
}
此代码编译时没有错误,但是执行时会发生与以前相同的情况,只生成2个循环,但它们没有连接到关节Initialize()的最后2个参数指定关节在世界坐标中的两个定位点,一个在body0上,一个在body1上。我不确定您尝试使用vector blobCenter实现什么,但这两个锚点(将它们视为您正在创建的关节的两个端点)在技术上不应该相同 首先,请尝试:
jointDef.Initialize(body[0], body[1], body[0]->GetWorldCenter(), body[1]->GetWorldCenter());
这将设置一个距离约束=创建的两个实体之间的初始静止距离,该距离随后将由关节保持
最后但并非最不重要的一点是,在代码末尾将关节添加到世界:
world->CreateJoint(&jointDef);
world->CreateJoint(&jointDef);