【cocos2dx】 ジョイスティックを簡単に実装する

【cocos2dx】 ジョイスティックを簡単に実装する
   

cocos2dxだけではないのですが、ジョイスティックを一から実装してコードを書いたりするのはとてもメンドクサイです。(私には難しいすぎる作業です)
ということで、今回はこの「ジョイスティック」や「ボタン」の機能を簡単に実装できる方法を紹介したいと思います。

とは言いましても、cocos2dでお世話になった「SneakyInput」をcocos2dxでも使ってみようという試みです。
実際にプログラミングが下手糞な私でも簡単に実装出来ました。


SneakyInputをダウンロードをする

以下のサイトから、SneakyInputの各クラスをプロジェクトに追加してください。
cpinan/SneakyInput-Cocos2dx-2.0.x · GitHub

画面の右の方に「Download ZIP」がありますので、ここからダウンロード。
そのままXcode上に追加をしてあげれば完了です。

バージョンは気にしない

バージョンが「Cocos2dx-2.0.x」となっていますが、現在私が開発している環境である「cocos2dx-2.1.3」でも使えました。
ですので、大幅なアップグレードがない限りは多分大丈夫でしょう。



ジョイスティックを実装する

まずは、画像を2種類用意してください。
  • ジョイスティックの背景になる画像
  • ジョイスティックの動く部分の画像

  • とりあえず、こんな感じの画像です。
    Jyostric1

    Jyostric2


    実際のコード

    これは、cocos2dの時とほぼ同じです。
    以下の用に、ジョイスティックを配置します。
    
       
        SneakyJoystick *joystickbase = new SneakyJoystick();
        joystickbase->initWithRect(CCRectMake(0, 0, 100.0f, 100.0f));
        joystickbase->autorelease();
        
        
        
        SneakyJoystickSkinnedBase *skinjoystick = SneakyJoystickSkinnedBase::create();
        skinjoystick->setBackgroundSprite(CCSprite::create("jyostric1.png"));  //ジョイスティックの背景
        skinjoystick->setThumbSprite(CCSprite::create("jyostric2.png")); //ジョイスティックの動く画像
        skinjoystick->setJoystick(joystickbase);
        skinjoystick->setPosition(ccp(550,50));
        
    
        //ヘッダーで    SneakyJoystick *joystickと定義をしてます。
        joystick = skinjoystick->getJoystick();
        joystick->setAutoCenter(true);
        joystick->setHasDeadzone(true);
        
        this->setVisible(false);
        
        this->addChild(skinjoystick,10);
    
    
    

    setAutoCenterは、自動的に真ん中に戻すかどうか。
    setHasDeadZoneは、ジョイスティックが反応しないデッドスペースを設定出来ます。
    
       //このようにデッドスペースの半径を設定します。
        joystick->setDeadRadius(20.0f);
    
    
    2013 deadspace 720



    [こちらを参考にしました。]
    cpinan/SneakyInput-Cocos2dx-2.0.x · GitHub

    ジョイスティックを使う

    ジョイスティックの設定ができれば、後はジョイスティックを動かした値を取り出すだけです。
    CCPointクラスで動かしているポイントを以下の用に取得できます。
    
    
        CCPoint moveingPoint = joystick->getVelocity();
    
    
    

    これを上手くゲーム内で利用しましょう。

    Related Posts Plugin for WordPress, Blogger...