[寒江孤叶丶的Cocos2d-x之旅_11]Cocos2d-x的重力感应Demo。如何使用重力感应。
生活随笔
收集整理的這篇文章主要介紹了
[寒江孤叶丶的Cocos2d-x之旅_11]Cocos2d-x的重力感应Demo。如何使用重力感应。
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
? ? 在開發(fā)一些賽車類,或者躲避類的游戲中,經(jīng)常會(huì)用到重力感應(yīng)的功能。比如以前玩兒的控制一個(gè)金屬球走迷宮的游戲。
? ? 在最近這個(gè)版本的TestCPP中我沒有找到關(guān)于重力感應(yīng)的例程,不知道是官方?jīng)]有添加還是我自己沒找到。不管如何吧,我通過網(wǎng)上搜索資料。解決了自己所遇到的問題。在此分享出來希望對(duì)大家有用。
? ? 一下內(nèi)容是自己的理解,不對(duì)之處歡迎指出!
首先先看一張圖,這事一個(gè)XYZ軸的三維坐標(biāo)圖,通過XYZ軸指向的方向來獲得一個(gè)-1到1的系數(shù),來分辨出當(dāng)前手機(jī)的姿勢。 ?X是橫軸 Y是縱軸,而Z則是一個(gè)穿過屏幕的法線。
如果箭頭指向水平方向,是0,指向上方則是-1 ?而下方則是1,如圖,YX 都為0 ? 而Z 則是-1,如果這時(shí),將Y軸往上翹起,Y會(huì)由0 慢慢的轉(zhuǎn)化為-1 ?如果將X軸向下傾斜,則X會(huì)由0 ?變?yōu)?。
使用方法:
在init方法中,添加初始化的代碼:
//開啟重力感應(yīng)Device::setAccelerometerEnabled(true);//設(shè)置監(jiān)聽的回調(diào)方法auto listener = EventListenerAcceleration::create(CC_CALLBACK_2(HelloWorld::onAcceleration, this));//獲取時(shí)間分發(fā)期,并向時(shí)間分發(fā)器添加監(jiān)聽時(shí)間Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(listener, this);//創(chuàng)建一個(gè)用于測試的Spriteauto spTest = Sprite::create("CloseNormal.png");spTest->setPosition(Vec2(Director::getInstance()->getVisibleSize().width/2, Director::getInstance()->getVisibleSize().height/2));this->addChild(spTest);spTest->setTag(1000); 在頭文件中添加一行成員函數(shù)的聲明:(這里直接添加到HelloWorld類中了) void onAcceleration(cocos2d::Acceleration* acc, Event* unused_event); 最后將方法實(shí)現(xiàn): void HelloWorld::onAcceleration(Acceleration* acc, Event* unused_event){//獲取導(dǎo)演類對(duì)象auto dirInstance = Director::getInstance();//獲取之前創(chuàng)建的Spriteauto spTest=this->getChildByTag(1000);//通過導(dǎo)演類中的方法,將Sprite的屏幕坐標(biāo)轉(zhuǎn)換為UIkit的坐標(biāo)auto uiSpPoint = dirInstance->convertToUI(spTest->getPosition());//并將中里感應(yīng)的數(shù)值乘上中里系數(shù)uiSpPoint.x += acc->x * 9.81f;uiSpPoint.y -= acc->y * 9.81f;//將計(jì)算后的UIkit坐標(biāo)轉(zhuǎn)換回屏幕中的坐標(biāo)auto spNewPoint = dirInstance->convertToGL(uiSpPoint);spTest->setPosition(spNewPoint); }
總結(jié)
以上是生活随笔為你收集整理的[寒江孤叶丶的Cocos2d-x之旅_11]Cocos2d-x的重力感应Demo。如何使用重力感应。的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用Oracle VM Virtual
- 下一篇: C语言在TXT文件中搜索字符串