我需要使用box2d和cocos2dx開發加農炮遊戲。炮被分爲兩個部分當在旋轉關節達到一定角度時發生火災事件
基地其被固定在地面和不移動。
b2WeldJointDef basePlatformWeldJointDef; basePlatformWeldJointDef.Initialize(base->getBody(), weaponPlatform->getBody(),weaponPlatform->getBody()->GetWorldCenter()); basePlatformWeldJointDef.collideConnected = false; basePlatformWeldJoint = m_world->CreateJoint(&basePlatformWeldJointDef);
臂被固定在與RevoluteJoint基。
b2RevoluteJointDef armJointDef; armJointDef.Initialize(base->getBody(), arm->getBody(), m_loader->pointsToMeters(ccp(armPosition.x-(arm->getContentSize().width*WeaponScale/4),armPosition.y))); armJointDef.enableMotor = true; armJointDef.enableLimit = true; armJointDef.motorSpeed = 0; armJointDef.lowerAngle = CC_DEGREES_TO_RADIANS(0); armJointDef.upperAngle = CC_DEGREES_TO_RADIANS(0); armJointDef.maxMotorTorque = 2; armJointDef.collideConnected = false; cannonRevoluteJoint = (b2RevoluteJoint*)m_world->CreateJoint(&armJointDef);
大炮應該計算將會發射的角度,並且這是正確計算的。在這裏我使用lowerAngle和higherAngle都是所需的角度,因此手臂直接移動到所需的角度而沒有運動。
然後我需要移動手臂不只是改變它的角度,所以我設置lowerAngle和higherAngle與舊的角度和所需的角度取決於哪些將是更低的和哪些將更高,並改變電機速度所述RevoluteJoint的
的問題是,我需要一個回調方法,其觸發時轉動關節達到一定角度時,或者當電機速度達到零假設當臂到達極限角度將停止並且電機速度將爲零。
我於是有了搜索,我發現This Solution其計算的每一步,這是可以使用的角度,但它需要更多的計算,我覺得怠盡。
是否存在用於通知電機速度或某個角度的回叫方法?
然後我讓我的檢查步驟它只是一個條件如果不需要全新的方法來計劃 – 2014-09-25 20:34:42
只是不要犧牲設計過早的優化,否則 - 無論工程。 – 2014-09-25 20:37:23