Box2d:如何施力以保持从左向右摆动?

时间:2013-08-15 10:38:29

标签: cocos2d-iphone box2d

我迷失了自己...

情况: 使用box2d在cocos2d中进行游戏,我在一个固定的身体和一个动态的身体之间有一个绳索。

当我掉落时,由于世界的引力,动态的身体从左向右摆动,然后从右向左摆动。

问题: 秋千越来越短,直到最后动态的身体仍悬挂在固定的身体下方。这是正常行为,但我需要它继续摆动。

我的想法:  我想我需要在摆动的方向上对绳索施加切向力但是现在怎么做才是一个谜:)

2 个答案:

答案 0 :(得分:0)

尝试将绳索关节的阻尼系数设置为零

ropeJointDef.dampingRatio = 0.0f;

希望它有所帮助!

答案 1 :(得分:0)

这是一个可以帮助您解决小问题的小代码

bool YourClass::init(){

CCCallFunc *swingL = CCCallFunc::create(this,callfunc_selector(YourClass::swingLeft));
CCDelayTime *delay = CCDelayTime::create(5);
CCCallFunc *swingR = CCCallFunc::create(this, callfunc_selector(YourClass::swingRight));

this->runAction(CCRepeatForever::create(CCSequence::create(swingL,delay,swingR,NULL)));

}   



void YourClass::swingLeft(){

    b2Body *dynamicBody = get your body from b2world;
    dynamicBody->SetLinearVelocity(b2Vec2(-10, 0));//set velocity of the swing

}

void YourClass::swingRight(){

    b2Body *dynamicBody = get your body from b2world;
    dynamicBody->SetLinearVelocity(b2Vec2(10, 0));//set velocity of the swing

}