这里我们基于一个cocos2dx-x引擎的贪食豆小游戏,简单实现手柄与计分板等交互功能。
运行游戏发现,吃到了豆豆也不会有分数奖励,甚至手柄连豆豆的上下移动都没有实现。
可以发现,源码是指定左右和暂停来控制角色的移动,我们改用计算角度和力度来控制角色移动。
// 获取摇杆角度
float Joystick::getAngle()
{
TouchPoint_Angle = atan2f((m_currentPoint - m_centerPoint).y, (m_currentPoint - m_centerPoint).x);
return TouchPoint_Angle;
}
// 获取摇杆力度
float Joystick::getVelocity()
{
TouchPoint_Distanse = m_centerPoint.getDistance(m_currentPoint);
return 1.0 * TouchPoint_Distanse / m_radius;
}
然后通过计算所得的角度和力度分别更新角色横纵坐标,而且需要防止超出游戏界面
// 通过角度和力度控制角色移动
if (m_joystick->getVelocity() > 0)
{
if (((bean->getPositionX() - bean->getContentSize().width /