預設中,PhysicsBody碰撞後會產生旋轉
請問要如何讓PhysicsBody碰撞後不會旋轉?
之前用cocos2d-x 3.0有
void PhysicsBody::setRotationEnable(bool enable)
這個function可以使用
但在quick cocos2d-x沒有此函式
想請問在quick cocos2d-x 如何可以達到同樣的方法?
預設中,PhysicsBody碰撞後會產生旋轉
請問要如何讓PhysicsBody碰撞後不會旋轉?
之前用cocos2d-x 3.0有
void PhysicsBody::setRotationEnable(bool enable)
這個function可以使用
但在quick cocos2d-x沒有此函式
想請問在quick cocos2d-x 如何可以達到同樣的方法?
自己的問題自己解XD
先感謝 cocos2d-x 與 quick-cocos2d-x 為open source
在cocos2d-x 3.0中
void PhysicsBody::setRotationEnable(bool enable)
{
if (_rotationEnabled != enable)
{
cpBodySetMoment(_info->getBody(), enable ? _moment : PHYSICS_INFINITY);
_rotationEnabled = enable;
}
}
要把body:setRotationEnable(false)
其實就是執行
cpBodySetMoment(_info->getBody(),PHYSICS_INFINITY);
另外在quick-cocos2d-x 2.x中
void CCPhysicsBody::setInertia(float inertia)
{
cpBodySetMoment(m_body, inertia);
}
在Chipmunk論壇中也說了
“For limiting rotation you should set the inertia to infinity on the boxes.”
所以要讓物體碰撞後不旋轉,只要把inertia(慣性)設為極值就可以了
INFINITY定義在chipmunk_types.h中
沒有porting到lua過來
所以我使用lua的極值來達成
如下
body:setInertia(math.huge)
測試後,碰撞不旋轉達成
如有問題可以再討論

谢谢楼主分享,自己动手丰衣足食。