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:如何施加力以保持从左到右的摆动?的主要内容,如果未能解决你的问题,请参考以下文章