cocos2d-x地心引力感应
cocos2d-x重力感应
1.调用cclayer的方法setAccelerometerEnabled(true)在层里启用重力感应
2.启用重力感应后,重力方向变化时,会回调cclayer的方法didAccelerate( CCAcceleration* pAccelerationValue ),在自己派生的层里重写此方法,如:
void MyCarLayer::didAccelerate( CCAcceleration* pAccelerationValue ) { //控制减速的速率值越小,更容易改变方向 float deceleration = 0.5f; //加速计的敏感值越大,主角对加速计的输入会越敏感 float sensitivity = 10.0; //最大移动距离 float maxVelocity = 100.0f; m_myCarMoveDis.x = m_myCarMoveDis.x*deceleration + pAccelerationValue->x*sensitivity; if (m_myCarMoveDis.x>=maxVelocity) { m_myCarMoveDis.x = maxVelocity; } else if(m_myCarMoveDis.x <=-maxVelocity) { m_myCarMoveDis.x = -maxVelocity; } }
pAccelerationValue包含x,y,z三个方向的重力值(由手机在这3个方向的偏移决定)
一般在这个回调函数里得到一次重力感应主角的偏移距离,然后在update里把主角的当前位置加上这个距离