【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の時とほぼ同じです。 以下の用に、ジョイスティックを配置します。 [c]

    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);
    

    [/c]

    setAutoCenterは、自動的に真ん中に戻すかどうか。 setHasDeadZoneは、ジョイスティックが反応しないデッドスペースを設定出来ます。 [c]

    //このようにデッドスペースの半径を設定します。 joystick->setDeadRadius(20.0f);

    [/c]

    2013 deadspace 720

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

    ジョイスティックを使う

    ジョイスティックの設定ができれば、後はジョイスティックを動かした値を取り出すだけです。 CCPointクラスで動かしているポイントを以下の用に取得できます。 [c]

    CCPoint moveingPoint = joystick->getVelocity();
    

    [/c]

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