2013-05-08 1 views
0

Здесь я делаю небольшую игру в box2d. В том, что я хочу, чтобы тело автоматически двигалось вверх и вниз, как Lift. Я пробовал этот код, используя этот код, тело может двигаться, когда я касаюсь. но я хочу двигаться у позиции от 0 до 480 и снова реверс 480 до 0.Как создать движок box2d body, например Lift (тело может перемещаться вверх и вниз автоматически)

enter code here 

//Set up a 1m squared box in the physics world 
    b2BodyDef bodyDef; 
    bodyDef.type = b2_dynamicBody; 

    bodyDef.position.Set(p.x/PTM_RATIO, p.y/PTM_RATIO); 
    bodyDef.userData = sprite; 
    b2Body *body = world->CreateBody(&bodyDef); 

    // Define another box shape for our dynamic body. 
    b2PolygonShape dynamicBox; 
    dynamicBox.SetAsBox(.5f, .5f);//These are mid points for our 1m box 

    // Define the dynamic body fixture. 
    b2FixtureDef fixtureDef; 
    fixtureDef.shape = &dynamicBox; 
    fixtureDef.density = 1.0f; 
    fixtureDef.friction = 0.3f; 
    body->CreateFixture(&fixtureDef); 
- (void)ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    //Add a new body/atlas sprite at the touched location 
    for(UITouch *touch in touches) { 
     CGPoint location = [touch locationInView: [touch view]]; 

     location = [[CCDirector sharedDirector] convertToGL: location]; 

     //[self addNewSpriteWithCoords: location]; 
     b2Vec2 force = b2Vec2(0, 20); 
     _body->ApplyLinearImpulse(force, _body->GetPosition()); 
    } 
} 

ответ

0

Смотрите раздел суставов здесь:

http://www.box2d.org/manual.html

Призматический сустав может быть хорошо для этого. Также вы можете рассмотреть кинематическое тело для этого, если оно должно быть лифтом, но на самом деле это зависит от того, чего вы надеетесь достичь. Определенно проверьте разницу между кинематическим и динамическим (и статическим) телами в разделе тел.