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里把主角的当前位置加上这个距离

你可能感兴趣的:(cocos2d-x)