我在这件事上迷失了自己……
情况: 在 cocos2d 中使用 box2d 进行游戏,我在一个固定体和一个动态体之间有一个绳索接头。
当我放下动态物体时,由于世界上的重力,它会从左向右摆动,然后从右向左摆动。
问题: 摆动越来越短,直到最后动态主体仍然悬挂在固定主体下方。这是正常行为,但我需要它来保持摆动。
我的想法: 我认为我需要在摆动的方向上对绳索施加一个切向力,但目前如何做到这一点还是个谜:)
我在这件事上迷失了自己……
情况: 在 cocos2d 中使用 box2d 进行游戏,我在一个固定体和一个动态体之间有一个绳索接头。
当我放下动态物体时,由于世界上的重力,它会从左向右摆动,然后从右向左摆动。
问题: 摆动越来越短,直到最后动态主体仍然悬挂在固定主体下方。这是正常行为,但我需要它来保持摆动。
我的想法: 我认为我需要在摆动的方向上对绳索施加一个切向力,但目前如何做到这一点还是个谜:)
尝试将绳索接头的阻尼系数设置为零
ropeJointDef.dampingRatio = 0.0f;
希望能帮助到你!
这是一个小代码,可以帮助您解决小问题
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
}