• TOP
  • >
  • その他
  • >
  • タッチ操作を有効にする

タッチ操作を有効にする

スマートフォンの特徴として画面を使ったタッチ操作があります。
もちろん、cocos2d-xでも、タッチ操作を使ったゲームを作成することができます。
今回は、この「タッチ操作」を有効にする方法を紹介します。

cocos2dx3.x

タッチ操作を有効にする

タッチ操作を有効にするために、いくつかのコードを書く必要があります。

//タッチ処理
auto listener = EventListenerTouchOneByOne::create();
listener->setSwallowTouches(true);
    
listener->onTouchBegan = CC_CALLBACK_2(TouchLayer::onTouchBegan, this);
listener->onTouchMoved = CC_CALLBACK_2(TouchLayer::onTouchMoved,this);
listener->onTouchEnded = CC_CALLBACK_2(TouchLayer::onTouchEnded, this);
    
auto dip = Director::getInstance()->getEventDispatcher();
dip->addEventListenerWithSceneGraphPriority(listener, this);


タッチ操作を受け取るメソッドを作成する

有効にされたタッチ操作を感知するメソッドを作成します。
まずはレイアーのヘッダーファイルにメソッドを定義します。
//ヘッダーファイル

 bool onTouchBegan(cocos2d::Touch* touch,cocos2d::Event* event);
 void onTouchMoved(cocos2d::Touch* touch, cocos2d::Event* event);
 void onTouchEnded(cocos2d::Touch* touch, cocos2d::Event* event);


後は、実際ゲーム中でどのように利用するかと記載します。

bool TouchLayer::onTouchBegan(cocos2d::Touch* touch,cocos2d::Event* event){

    //画面をタッチした時の処理

    return true;
    
}

void TouchLayer::onTouchMoved(cocos2d::Touch* touch,cocos2d::Event* event) {
    
    //タッチ中の処理

}

void TouchLayer::onTouchEnded(cocos2d::Touch *touch, cocos2d::Event *event){
    
     //タッチが終わった時の処理

}


タッチした時のPointを利用する

タッチした場所をPoint型で取得する方法は以下の通りです。

auto location = touch->getLocation();



cocos2dx2.x

タッチ操作を有効にする

タッチ操作を有効にするために、いくつかのコードを書く必要があります。
まずは、CCLayerクラスのinit()に以下のコードを記入します。

this->setTouchEnabled(true); 


タッチ操作を受け取るメソッドを作成する


次に、レイアーが表示された時に呼び出される「onEnter()」メソッドに以下のコードを書きます。

void TouchLayer::onEnter(){
    
   CCLayer::onEnter();
   CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(this, 0, true);
    
}


タッチ操作を受け取るメソッドを作成する

有効にされたタッチ操作を感知するメソッドを作成します。
まずはレイアーのヘッダーファイルにメソッドを定義します。
virtual bool ccTouchBegan(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent);

//タッチが終わった時に呼び出されるメソッド
virtual void ccTouchEnded(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent); 

//タッチをしている時に呼び出されるメソッド
virtual void ccTouchMoved (cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent);


後は、実際ゲーム中でどのように利用するかと記載します。
//ccTouchBeganではtrueを返します。
bool TouchLayer::ccTouchBegan(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent){

    
    return true;
    
}

//タッチを終えた時に、シーンを移動させる。
void TouchLayer::ccTouchEnded(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent){
    
    CCDirector::sharedDirector()->replaceScene(CCTransitionZoomFlipX::create(2.0f, TestLayer::scene()));
}


これで、画面を押した時に、シーンが移動します。

            

経営育成ゲーム「わたしの動物園」をリリースしました!

cocos2dxを使って作成したアプリを作成しました。
無料で遊べますので、ぜひゲーム作りの参考にしてみて下さい!

【Sponsored Link】

更新履歴