本系列学习教程使用的是cocos2d-x-2.1.4(最新版为3.0alpha0-pre) ,PC开发环境Windows7,C++开发环境VS2010
智能手机的游戏与应用中,也经常会用到加速传感器事件来丰富用户的操作,比如赛车游戏中摇动手机控制前进
方向、动作过关游戏中通过加速度传感器来控制角色的移动和跳跃方向等。那么这一期,我们就来学习一下如何使用
加速度传感器事件。
一、加速度传感器事件
Cocos2D-X中使用加速度传感器代理CCAccelerometerDelegate提供的方法来接受加速度传感器的数值变化,继承
关系如下图所示。
布景层类CCLayer和其子类继承自CCAccelerometerDelegate类,因此布景层类和其子类可以使用获得加速度传感
器的方法。
二、CCAccelerometerDelegate类的函数
CCAccelerometerDelegate类的公共函数见下图。
didAccelerate函数传入CCAcceleration结构体,其中的数据见下图。
CCAcceleration结构体存储了加速度传感器的数据,包括时间戳和坐标轴上的加速度值,这个值以重力加速度为
单位,因此,要获得相应坐标轴加速度的值时,需要乘上重力加速度g。见如下代码所示。
ptTemp.x += pAccelerationValue->x * 9.81f;
ptTemp.y -= pAccelerationValue->y * 9.81f;
三、加速度传感器事件使用实例
要在CCLayer中获得加速度传感器事件的数据,首先要在初始化函数中加入允许接受加速度传感器事件的函数。
1、首先新建Cocos2D-X项目,取名为“MyKeypad”,然后在HelloWorldScene.h文件中声明如下成员函数和变量。
class HelloWorld : public cocos2d::CCLayer
{
protected:
cocos2d::CCSprite* m_pBall;
public:
// Here's a difference. Method 'init' in cocos2d-x returns bool, instead of returning 'id' in cocos2d-iphone
virtual bool init();
// there's no 'id' in cpp, so we recommand to return the exactly class pointer
static cocos2d::CCScene* scene();
virtual void didAccelerate(cocos2d::CCAcceleration* pAccelerationValue);
// implement the "static node()" method manually
CREATE_FUNC(HelloWorld);
};
2、在HelloWorldScene.cpp文件中的init函数中添加如下所示代码。
bool HelloWorld::init()
{
bool bRet = false;
do
{
CC_BREAK_IF(! CCLayer::init());
setAccelerometerEnabled(true);
m_pBall = CCSprite::create("ball.png");
m_pBall->setPosition(ccp(100, 150));
addChild(m_pBall);
m_pBall->retain();
bRet = true;
} while (0);
return bRet;
}
在init函数中加入setAccelerometerEnabled(true),使得加速度事件可以被捕获,然后重写didAccelerate函数。
3、最后在HelloWorldScene.cpp文件中添加如下所示函数。
void HelloWorld::didAccelerate(CCAcceleration* pAccelerationValue)
{
CCDirector* pDir = CCDirector::sharedDirector();
/*FIXME: Testing on the Nexus S sometimes m_pBall is NULL */
if ( m_pBall == NULL ) {
return;
}
CCSize ballSize = m_pBall->getContentSize();
CCPoint ptNow = m_pBall->getPosition();
CCPoint ptTemp = pDir->convertToUI(ptNow);
ptTemp.x += pAccelerationValue->x * 9.81f;
ptTemp.y -= pAccelerationValue->y * 9.81f;
CCPoint ptNext = pDir->convertToGL(ptTemp);
FIX_POS(ptNext.x, (10 + ballSize.width / 2.0), (100 - ballSize.width / 2.0));
FIX_POS(ptNext.y, (50 + ballSize.height / 2.0), (150 - ballSize.height / 2.0));
m_pBall->setPosition(ptNext);
}
在didAccelerate函数中获得CCAcceleration结构体,获得x轴和y轴的以重力为单位的加速度值,分别乘以重力加速
度值获得相应的加速度。
4、运行实例效果图
源码下载地址
分享到:
相关推荐
资源名称:Cocos2d-x实战:JS卷——Cocos2d-JS开发内容简介:本书是介绍Cocos2d-x游戏编程和开发技术书籍,介绍了使用Cocos2d-JS中核心类、瓦片地图、物理引擎、音乐音效、数据持久化、网络通信、性能优化、多平台...
Cocos2D-X开发学习笔记-加速度传感器事件的使用示例 教程地址:http://blog.csdn.net/yangyu20121224/article/details/10043417
Cocos2D-X开发学习笔记-按键事件使用示例 教程地址:http://blog.csdn.net/yangyu20121224/article/details/10040985
Cocos2D-X开发学习笔记-触屏事件使用示例 教程地址:http://blog.csdn.net/yangyu20121224/article/details/10029143
在使用cocos2d-x开发游戏的过程中,为了实现逻辑和显示相分离。 在下通宵了一个晚上,写出了该事件类。 谨记,该事件只能用于cocos2d-x中。 事件发送者需要继承EventDispatcher类 事件接收者需要继承EventHandle类...
Cocos2d-x是移动跨平台开发最流行的游戏引擎,而本书是一本很全面的、比较‘接地气’的游戏开发教程。书中汇聚了热门手机游戏《捕鱼达人》开发的实战经验,作者从最基础的内容开始,逐步深入地介绍了Cocos2d-x的相关...
资源名称:Cocos2D-X游戏开发技术精解内容简介:Cocos2D-X是一款支持多平台的 2D手机游戏引擎,支持iOS、Android、BlackBerry等众多平台。当前,很多移动平台流行的游戏,都是基于Cocos2D-X开发的。 《Cocos2D-X...
Cocos2D-X开发学习笔记-游戏数据存储项目实例 教程地址:http://blog.csdn.net/yangyu20121224/article/details/10857813
自己记录的Cocos2d-x学习笔记,希望能够帮助新手,快速入门,掌握cocos2d-x的开发
Cocos2D-X开发学习笔记-动作类之基础动作的使用示例(下) 教程地址:http://blog.csdn.net/yangyu20121224/article/details/9840757
Cocos2D-X开发学习笔记-音乐和音效的使用示例 教程地址:http://blog.csdn.net/yangyu20121224/article/details/10228941
Cocos2D-X开发学习笔记-游戏数据存储项目实例(下) 教程地址:http://blog.csdn.net/yangyu20121224/article/details/10946695
Cocos2D-X开发学习笔记-渲染框架之图形的绘制 教程地址:http://blog.csdn.net/yangyu20121224/article/details/9748001
Cocos2D-X开发学习笔记-时间调度schedule函数的使用 教程地址:http://blog.csdn.net/yangyu20121224/article/details/9749457
资源名称:大富翁手机游戏开发实战基于Cocos2d-x3.2引擎内容简介:李德国编著的《大富翁手机游戏开发实战(基于 Cocos2d-x3.2引擎)》使用Cocos2d-x游戏引擎技术,带领读者一步一步从零开始进行大富翁移动游戏的开发...
精通COCOS2D-X游戏开发 精通COCOS2D-X游戏开发 精通COCOS2D-X游戏开发 精通COCOS2D-X游戏开发 精通COCOS2D-X游戏开发
cocos2d-x-2.1.5
《Cocos2D-X游戏开发技术精解》详细介绍如何使用Cocos2D-X引擎开发自己的移动平台游戏。全书共15章,主要内容包括:Cocos2D-X引擎简介;如何建立跨平台的开发环境;引擎的核心模块——渲染框架;如何实现动态画面和...
Cocos2d-x实战 JS卷 Cocos2d-JS开发 PDF 电子书完整版本
Cocos2d-x-3.x游戏开发之旅-钟迪龙著 全新pdf版和附书代码(代码为工程文件,可复制) 附带目录标签