日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[寒江孤叶丶的Cocos2d-x之旅_11]Cocos2d-x的重力感应Demo。如何使用重力感应。

發布時間:2024/1/1 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [寒江孤叶丶的Cocos2d-x之旅_11]Cocos2d-x的重力感应Demo。如何使用重力感应。 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? ? 在開發一些賽車類,或者躲避類的游戲中,經常會用到重力感應的功能。比如以前玩兒的控制一個金屬球走迷宮的游戲。

? ? 在最近這個版本的TestCPP中我沒有找到關于重力感應的例程,不知道是官方沒有添加還是我自己沒找到。不管如何吧,我通過網上搜索資料。解決了自己所遇到的問題。在此分享出來希望對大家有用。

? ? 一下內容是自己的理解,不對之處歡迎指出!

首先先看一張圖,這事一個XYZ軸的三維坐標圖,通過XYZ軸指向的方向來獲得一個-1到1的系數,來分辨出當前手機的姿勢。 ?X是橫軸 Y是縱軸,而Z則是一個穿過屏幕的法線。

如果箭頭指向水平方向,是0,指向上方則是-1 ?而下方則是1,如圖,YX 都為0 ? 而Z 則是-1,如果這時,將Y軸往上翹起,Y會由0 慢慢的轉化為-1 ?如果將X軸向下傾斜,則X會由0 ?變為1。

使用方法:

在init方法中,添加初始化的代碼:

//開啟重力感應Device::setAccelerometerEnabled(true);//設置監聽的回調方法auto listener = EventListenerAcceleration::create(CC_CALLBACK_2(HelloWorld::onAcceleration, this));//獲取時間分發期,并向時間分發器添加監聽時間Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(listener, this);//創建一個用于測試的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); 在頭文件中添加一行成員函數的聲明:(這里直接添加到HelloWorld類中了)

void onAcceleration(cocos2d::Acceleration* acc, Event* unused_event); 最后將方法實現:

void HelloWorld::onAcceleration(Acceleration* acc, Event* unused_event){//獲取導演類對象auto dirInstance = Director::getInstance();//獲取之前創建的Spriteauto spTest=this->getChildByTag(1000);//通過導演類中的方法,將Sprite的屏幕坐標轉換為UIkit的坐標auto uiSpPoint = dirInstance->convertToUI(spTest->getPosition());//并將中里感應的數值乘上中里系數uiSpPoint.x += acc->x * 9.81f;uiSpPoint.y -= acc->y * 9.81f;//將計算后的UIkit坐標轉換回屏幕中的坐標auto spNewPoint = dirInstance->convertToGL(uiSpPoint);spTest->setPosition(spNewPoint); }




總結

以上是生活随笔為你收集整理的[寒江孤叶丶的Cocos2d-x之旅_11]Cocos2d-x的重力感应Demo。如何使用重力感应。的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。