ローラーコースターのようなゲームを作りたいので、そのための電車を作ってみたい..
boxbodyで電車を作ってみました
列車のコード:
-(void)addTrainAtPos:(CGPoint)pos:(int)n:(CCLayer *)Layer
{
b2BodyDef BodyDef;
BodyDef.type = b2_dynamicBody;
b2PolygonShape box;
b2FixtureDef fixtureDef;
fixtureDef.density = 0.5f;
fixtureDef.friction = 0.0f;
fixtureDef.restitution = 0.0f;
box.SetAsBox(ptm(15), ptm(10));
fixtureDef.shape = &box;
b2Body *Body;
b2Body *LastBody;
b2DistanceJointDef Djoint;
BodyDef.position.Set(ptm(pos.x - (0 * (30 + Spacing))), ptm(pos.y));
BodyDef.fixedRotation = true;
Body = world->CreateBody(&BodyDef);
Body->CreateFixture(&fixtureDef);
LastBody = Body;
for (int i=1; i<n; i++)
{
BodyDef.position.Set(ptm(pos.x - (i * (30 + Spacing))), ptm(pos.y));
BodyDef.fixedRotation = true;
Body = world->CreateBody(&BodyDef);
Body->CreateFixture(&fixtureDef);
//Djoint.Initialize(LastBody, Body, LastBody->GetWorldCenter(), Body->GetWorldCenter());
//world->CreateJoint(&Djoint);
//LastBody = Body;
}
}
また、列車の間にジョイントを作成して、continue LinearVelocity で移動しようとしました
-(void)MoveTrain
{
for(NSValue *Val in Bodies)
{
b2Body *Body = (b2Body *)[Val pointerValue];
b2Vec2 old = Body->GetLinearVelocity();
if(old.x < 20)
Body->SetLinearVelocity(b2Vec2(Speed, old.y));
}
}
しかし、私の問題は、列車をジャンプするときに最初のエンジンに力を加えますが、列車全体に力を加えようとしたよりも、列車全体が完全にジャンプしなかったことです。トレーニングを作成し、完全に移動してジャンプするための関連コード..