cocos2d-x重力感应
1.调用cclayer的方法setAccelerometerEnabled(true)在层里启用重力感应
2.启用重力感应后,重力方向变化时,会回调cclayer的方法didAccelerate( CCAcceleration* pAccelerationValue ),在自己派生的层里重写此方法,如:
[java]
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里把主角的当前位置加上这个距离
相关新闻>>
- 发表评论
-
- 最新评论 更多>>