昨日から、「cocos2d-xではじめるスマートフォンゲーム開発 」を復習をかねてやっています。自分以外のコードを見るととても新鮮ですね。色々なやり方があるのだなと感じます。
今回は、サンプルプロジェクトの1で、私が今まで使っていなかったことをブログに書いていきたいと思います。
![]() | cocos2d-xではじめるスマートフォンゲーム開発 [cocos2d-x Ver.3対応] for iOS/Android 三木 康暉 技術評論社 売り上げランキング : 6773 Amazonで詳しく見る |
CC_SYNTHESIZE_RETAIN
CC_SYNTHESIZEを、Ref型のクラスで利用する場合に利用する。getやsetで管理することができる。
CC_SYNTHESIZE_RETAIN(Sprite*, _hoge,Hoge); //コンストラクタで処理値を設定 HogeClass::HogeClass() :_hoge(NULL) { } //デストラクタでリリースをする。 HogeClass::~HogeClass() { CC_SAFE_RELEASE_NULL(_tiledMap); }
touch->getDelta();
タッチの移動量を取得できる。何かを移動させる時に利用をすると便利そう。
listener->onTouchMove = [this](Touch *touch,Event *event){ Vec2 delta = touch->getDelta(); };
StringUtils::toString
int型などを、Stringに変換する。今まではformatを利用していたので、これは便利そう。
int hoge = 10; auto label = Label::createWithSystemFont(StringUtils::toString(hoge), "arial", 12); //今まで auto label2 = Label::createWithSystemFont(StringUtils::format("%i",hoge), "arial", 12);
powf
powf(x,y)でxのy乗を導きだせる。便利そうだが、具体的に、どこで使ったらいいのかはイマイチよくわからない。
乱数
乱数はいくつか方法があるが、以下の方法が載っていました。CC_SYNTHESIZE(std::mt19937, _engine, Engine); Hoge::Hoge(){ std::random_device rdev; _engine.seed(rdev()); } float Hoge::generateRandom(float max,float min){ std::uniform_real_distribution<float> dest(min,max); return dest(_engine); } //0,1の間のランダムなfloat型を返す float _hoge = this->generateRandom(0,1);
enum class
よくタグなどで利用しているのですが、[enum]にclassがついた形での変数宣言。enum class Hoge{ HOGE1, HOGE2, }; this->setTag(Hoge::HOGE1);
最後に
現在2つめのサンプルをやっているのですが、上手く動かないのでお手上げ状態です。物理演算は触ったことなかったのですが、とても簡単に実装ができそうでしたが。
問題点はActionクラスのFollowクラスが上手く動かないのです。
Sprite型は動くのですが、どうしてもTileMapが動きません。もし、何か良い方法があれば教えて欲しいです。
バージョンがv3.4を利用しています。
//Stage.cpp auto rect = Rect(0, 0, map->getContentSize().width, winSize.height); this->runAction(Follow::create(player,rect));
