【cocos2dx】「cocos2d-xではじめるスマートフォンゲーム開発」を読む

昨日から、「cocos2d-xではじめるスマートフォンゲーム開発 」を復習をかねてやっています。自分以外のコードを見るととても新鮮ですね。色々なやり方があるのだなと感じます。 今回は、サンプルプロジェクトの1で、私が今まで使っていなかったことをブログに書いていきたいと思います。

cocos2d-xではじめるスマートフォンゲーム開発 [cocos2d-x Ver.3対応] for iOS/Androidcocos2d-xではじめるスマートフォンゲーム開発 [cocos2d-x Ver.3対応] for iOS/Android
三木 康暉

技術評論社
売り上げランキング : 6773

Amazonで詳しく見る

CC_SYNTHESIZE_RETAIN

CC_SYNTHESIZEを、Ref型のクラスで利用する場合に利用する。 getやsetで管理することができる。 [c] CC_SYNTHESIZE_RETAIN(Sprite*, _hoge,Hoge);

//コンストラクタで処理値を設定 HogeClass::HogeClass() :_hoge(NULL) {

}

//デストラクタでリリースをする。 HogeClass::~HogeClass() { CC_SAFE_RELEASE_NULL(_tiledMap); }

[/c]

touch->getDelta();

タッチの移動量を取得できる。 何かを移動させる時に利用をすると便利そう。 [c] listener->onTouchMove = this{

 Vec2 delta = touch->getDelta();

}; [/c]

StringUtils::toString

int型などを、Stringに変換する。 今まではformatを利用していたので、これは便利そう。

[c] int hoge = 10; auto label = Label::createWithSystemFont(StringUtils::toString(hoge), "arial", 12);

//今まで auto label2 = Label::createWithSystemFont(StringUtils::format("%i",hoge), "arial", 12); [/c]

powf

powf(x,y)でxのy乗を導きだせる。 便利そうだが、具体的に、どこで使ったらいいのかはイマイチよくわからない。

乱数

乱数はいくつか方法があるが、以下の方法が載っていました。 [c] 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 dest(min,max); return dest(_engine);

}

//0,1の間のランダムなfloat型を返す float _hoge = this->generateRandom(0,1);

[/c]

enum class

よくタグなどで利用しているのですが、[enum]にclassがついた形での変数宣言。 [c]

enum class Hoge{

HOGE1, HOGE2,

};

this->setTag(Hoge::HOGE1);

[/c]

最後に

現在2つめのサンプルをやっているのですが、上手く動かないのでお手上げ状態です。 物理演算は触ったことなかったのですが、とても簡単に実装ができそうでしたが。

問題点はActionクラスのFollowクラスが上手く動かないのです。 Sprite型は動くのですが、どうしてもTileMapが動きません。もし、何か良い方法があれば教えて欲しいです。 バージョンがv3.4を利用しています。 [c] //Stage.cpp
auto rect = Rect(0, 0, map->getContentSize().width, winSize.height); this->runAction(Follow::create(player,rect));

[/c]