大富豪のゲームでは必要なかったのですが、Cocos2d-xで物理エンジンを試してみました。
Cocos2d-xには「Box2D」と「Chipmunk2D」という、2つの物理エンジンが含まれています。
Box2Dの方がメジャーな気もしますが、機能的にはどちらも大きな違いはないようです。
Chipmunkの方が昔からCocos2d-xに組み込まれていること、参考にしたかったゲームがChipmunkを使っていたことで、今回はChipmunkを使ってみました。
今までと設定を変えなければいけないのは、project.jsonだけです。(Box2Dも同様)
“modules” : [“cocos2d”, “extensions”]
↓
“modules” : [“cocos2d”, “extensions”, “external”]
Cocos2d-xに限らず、物理エンジンというものが初めてだったので最初は聞きなれない単語ばかりでしたが、
物理空間(ChipmunkではSpace、Box2DではWorld)を作成する、物理空間に物理オブジェクト(Body)を追加する、物理空間を更新、というのが共通的なようです。
あとは、物理オブジェクトに力を加えたり、衝突のリスナーを設定したりしておけば、勝手に動いてくれます。
物体が衝突したりすると、そこにパーティクル効果などつけたくなってきます。
Cocos2d-xで再生できるパーティクル効果を作成してくれる便利なツールがありました。
しかもブラウザ上でできます。
作成すると、plistファイルとpngファイルがダウンロードできます。
それらを配置してresource.jsに追加、再生はnew cc.ParticleSystem(plistファイル)で作成したパーティクルをレイヤーに追加するだけ、ととても簡単です。
大量にパーティクル効果を入れると描画が重くなりそうですが、WebGLが使えればかなり滑らかに動きます。
Cocos2d-xではproject.jsonで、WebGLを使うかどうかが設定できます。
“renderMode” : 0,
0が自動判定、1がCanvas使用、2がWebGL使用となります。
2にしてしまうと、WebGL対応していないブラウザでは表示されなくなってしまいますので、0に設定しておくのが無難かと思います。