当前位置:编程学习 > wap >>

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

补充:移动开发 , 其他 ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,