1

我在这件事上迷失了自己……

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

当我放下动态物体时,由于世界上的重力,它会从左向右摆动,然后从右向左摆动。

问题: 摆动越来越短,直到最后动态主体仍然悬挂在固定主体下方。这是正常行为,但我需要它来保持摆动。

我的想法: 我认为我需要在摆动的方向上对绳索施加一个切向力,但目前如何做到这一点还是个谜:)

4

2 回答 2

0

尝试将绳索接头的阻尼系数设置为零

ropeJointDef.dampingRatio = 0.0f;

希望能帮助到你!

于 2013-09-17T08:11:23.627 回答
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

}
于 2013-09-17T09:43:38.457 回答