嗯,我有一輛車的車輪在矩形塊上旋轉時沒有向前移動。b2圓形不能旋轉b2多邊形形狀Box2d Cocos2dx
車輪 - > b2CircleShape
矩形塊 - > b2PolygonShape
我給兩個密度和摩擦。依然沒有 !
具體來說,我有一個車輪接頭在汽車底盤和車輪之間操作。 我希望汽車通過給予車輪馬達正向速度向前移動。
代碼:
b2PolygonShape boxSahpe;
boxSahpe.SetAsBox(68/PTM_RATIO, 40/PTM_RATIO);
b2BodyDef bd;
bd.type = b2_dynamicBody;
bd.position.Set(8.85f, 10.0f);
bd.userData = this;
body = world->CreateBody(&bd);
body->CreateFixture(&boxSahpe, 1.0f);
b2BodyDef circleBD;
circleBD.type = b2_dynamicBody;
b2CircleShape circle;
circle.m_radius = 0.4f;
b2FixtureDef fd;
fd.shape = &circle;
fd.density = 1.0f;
fd.friction = 0.9f;
// left
circleBD.position.Set(7.70f, 9.0f);
m_wheel1 = world->CreateBody(&circleBD);
m_wheel1->CreateFixture(&fd);
// right
circleBD.position.Set(9.75f, 9.0f);
m_wheel2 = world->CreateBody(&circleBD);
m_wheel2->CreateFixture(&fd);
b2WheelJointDef jd;
b2Vec2 axis(0.0f, 1.10f);
jd.Initialize(body, m_wheel1, m_wheel1->GetWorldCenter(), axis);
jd.motorSpeed = 0.0f;
jd.maxMotorTorque = 20.0f;
jd.enableMotor = true;
jd.frequencyHz = m_hz;
jd.dampingRatio = m_zeta;
m_spring1 = (b2WheelJoint*)world->CreateJoint(&jd);
jd.Initialize(body,m_wheel2, m_wheel2->GetPosition(), axis);
jd.motorSpeed = 0.0f;
jd.maxMotorTorque = 10.0f;
jd.enableMotor = false;
jd.frequencyHz = m_hz;
jd.dampingRatio = m_zeta;
m_spring2 = (b2WheelJoint*)world->CreateJoint(&jd);
m_spring 1 & 2 - > b2WheelJoint
m_wheel 1 & 2 - > b2Body
體 - > b2Body
你的意思是輪體完全不旋轉,或者它只是不通過關節控制旋轉?顯示設置關節的代碼。 – iforce2d
有你的父親... 是的,圓形形狀在其位置旋轉只有不會前進...它像油一樣灑在地面上,輪子不能向前移動...我給了矩形塊和輪子摩擦... – user2416728
爲什麼電機轉速爲零? PTM_RATIO的價值是什麼?您是否嘗試將速度設置爲非零,最大扭矩更高?我嘗試了PTM_RATIO = 64和motorSpeed = 10的代碼,它運行良好。 – iforce2d