cocos2dx 3.x(讓精靈隨着重力感應的方向移動而移動)


 1 //
 2 //  GameScene.hpp
 3 //  HelloWord
 4 //
 5 //  Created by apple on 2017/1/7.
 6 //
 7 //
 8 
 9 #ifndef GameScene_hpp
10 #define GameScene_hpp
11 
12 #include <stdio.h>
13 #include "cocos2d.h"
14 
15 USING_NS_CC;
16 
17 class GameScene : public cocos2d::Layer
18 {
19 public:
20     static cocos2d::Scene* createScene();
21     
22     virtual bool init();
23     
24     //重力感應回調函數
25     void didAccelerate(Acceleration* acc, Event* event);
26     
27     CREATE_FUNC(GameScene);
28     
29 private:       
30     Size size;
31     Sprite *sprite;
32 };
33 #endif /* GameScene_hpp */

 

 

 1 //
 2 //  GameScene.cpp
 3 //  HelloWord
 4 //
 5 //  Created by apple on 2017/1/7.
 6 //
 7 //
 8 
 9 #include "GameScene.hpp"
10 USING_NS_CC;
11 
12 cocos2d::Scene* GameScene::createScene()
13 {
14     auto scene = Scene::create();   //創建一個場景
15     auto layer = GameScene::create();   //創建一個圖層
16     scene->addChild(layer);
17     return scene;
18 }
19 
20 //初始化當前的圖層
21 bool GameScene::init()
22 {
23     if(!Layer::init())      //初始化父類
24         return false;
25     
26     //獲取屏幕大小
27     size = Director::getInstance()->getVisibleSize();
28     //auto size = Director::getInstance()->getWinSize();
29     //添加一個圖片精靈
30     sprite = Sprite::create("CloseNormal.png");
31     sprite->setPosition(Vec2(size.width/2, size.height/2));
32     sprite->setTag(12);
33     this->addChild(sprite);
34     
35     //開啟重力感應
36     Device::setAccelerometerEnabled(true);
37     
38     //創建事件監聽對象
39     auto listener = EventListenerAcceleration::create(CC_CALLBACK_2(GameScene::didAccelerate, this));
40     
41     //在事件監聽器中注冊
42     _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this);
43     
44     return true;
45 }
46 
47 void GameScene::didAccelerate(Acceleration* acc, Event* event)
48 {
49     //使精靈隨重力感應移動
50     auto sprite = this->getChildByTag(12);      //通過標簽獲取精靈
51     
52     auto pos = sprite->getPosition();
53     
54     pos.x += acc->x;
55     pos.y += acc->y;
56     //pos.y += acc->y * 10;     //調整精靈移動敏感度
57     
58     sprite->setPosition(pos);
59 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM