Skip to content

Instantly share code, notes, and snippets.

@nazo
Last active August 29, 2015 14:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nazo/f1f7dedad41968eae1a3 to your computer and use it in GitHub Desktop.
Save nazo/f1f7dedad41968eae1a3 to your computer and use it in GitHub Desktop.
[cocos2dx]cocos2d-x 3.xのインストールと最初に行うこと

インストール方法はREADME.mdに大体書いてあるけど、何となく使ってみたくなったもので…

ダウンロード

  • githubから直接cloneしたらgit submodle init / git submodule updateしてね
  • python setup.py
  • .bash_profileしか出来ないのでzsh派は出来上がった.bash_profileをコピペ
  • Android作らないならXcodeだけ入れておけばいいけど、Android版も作りたいならAndroidSDKとかAntとか入れておこう(AntはHomebrewで入るよ)
  • python download_deps.py
  • external以下にファイルがもりもり増えます。jsonとかsqliteとかwebsocketsとか落ちてくるので必須

プロジェクトの作成

  • 作業ディレクトリ以下で以下のコマンドを叩く
    • cocos new MyGame -p com.your_company.mygame -l cpp -d NEW_PROJECTS_DIR
  • -dは省略するとカレントに作ってくれるからいらないかな。-lは言語選択で、luaとjsも選べるけど、cppがメジャーな気がする。C#バインディング作ってくれないかな。

開発

proj.ios_mac/[プロジェクト名].xcodeproj をXcodeで開くと普通に開発できる。Classes/HelloWorldScene.cppをもりもり書き換えてみよう

とりあえず最初にやりたいこと

好きな画像を出したい

Resources以下に画像をぶち込んでbool HelloWorld::init()内に

    auto your_sprite = Sprite::create("your_sprite.png");
    your_sprite->setPosition(Vec2(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y));
    this->addChild(your_sprite, 0);

で良い。 というかHelloWorld::init()の中身見れば大体わかる。文字の出し方もわかる。 大体わかったらいらないコードは消しておこう

テストで作ってるのに画像とか用意するのだるい!四角形でいいから出して!

無指定でSprite::create()すると真っ白が出てくるから調整すればいいよ

    auto sprite = Sprite::create();
    sprite->setTextureRect(Rect(0, 0, 64, 64));
    sprite->setColor(Color3B(127, 255, 255));
    sprite->setPosition(Vec2(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y));
    this->addChild(sprite, 0);

デバッグログを出したい

CCLOG(“hoge");

画像をタップした位置に動かしたい

void HelloWorld::update(float delta) を定義してあげると毎フレーム呼ばれてくれるのでそこで書きたいんだけどcallbackでしかタップ判定取れなくて発狂する。callback嫌いなんだよ!!!

    auto touchListener = EventListenerTouchOneByOne::create();
    touchListener->setSwallowTouches(true);
    touchListener->onTouchBegan = [this](Touch* touch, Event* event){
        Point location = touch->getLocation();
        auto action = MoveTo::create(2, location); // 2は移動にかかる秒数
        this->your_sprite->runAction(action);
        return false;
    };
    _eventDispatcher->addEventListenerWithSceneGraphPriority(touchListener, this);

C++11わからん!!ちなみに[]のところにクロージャ的にキャプチャしたい変数を書くらしいよ。 あとupdate(delta)はinit()にscheduleUpdate();って書いておかないと呼ばれないって誰かが言ってた。

画面を縦にしたい

http://www.cocos2d-x.org/wiki/Device_Orientation

当たり判定を取りたい

    if (player_sprite->getBoundingBox().intersectsRect(enemy_sprite->getBoundingBox())) {
        CCLOG("hit");
    }

えっ入力はcallbackなのにこっちのcallback無いの?何なの?

開発する時どこを参考にすればいい?

公式wikiをまず読んだほうがいい http://www.cocos2d-x.org/wiki

ビルド

とりあえずXcode上で何も考えずにビルドしたらSimulator上で動く。 あとREADME.mdに他環境のビルド方法とか書いてある

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment