1

私はこれで自分を失っています...

状況: cocos2d で box2d を使用してゲームを行っています。1 つの固定ボディと 1 つの動的ボディの間にロープ ジョイントがあります。

ドロップすると、世界の重力により、ダイナミック ボディが左から右に、次に右から左にスイングします。

問題: スイングがどんどん短くなり、最終的に動的なボディが固定されたボディの下にぶら下がってしまいます。これは正常な動作ですが、スイングを続けるには必要です。

私の考え: スイングの方向にロープジョイントに接線力を適用する必要があると思いますが、これを行う方法は今のところ謎です:)

4

2 に答える 2

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 に答える