Box2d:如何施加力以保持从左到右的摆动?

Posted

技术标签:

【中文标题】Box2d:如何施加力以保持从左到右的摆动?【英文标题】:Box2d : How to apply a force to keep swinging from left to right? 【发布时间】:2013-08-15 10:38:28 【问题描述】:

我正在迷失自我……

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

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

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

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

【问题讨论】:

【参考方案1】:

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

ropeJointDef.dampingRatio = 0.0f;

希望对你有帮助!

【讨论】:

【参考方案2】:

这里有一个小代码可以帮助你解决小问题

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


【讨论】:

以上是关于Box2d:如何施加力以保持从左到右的摆动?的主要内容,如果未能解决你的问题,请参考以下文章

如何在视图控制器中进行从左到右的转换,反之亦然

iOS 用从左到右的动画取消隐藏视图

UIImageView从左到右改变动画

如何使我的文本从左到右突出显示?

图像从左到右的淡入淡出效果

IOS / Objective-C / Storyboard:从左到右的自定义Segue在视图控制器之间创建黑条