我需要使用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