cocos2d-xスコアとカウンター

Pocket

くまのがっこう神経衰弱バトル

くまのがっこう神経衰弱バトルのスコアカウンターの数字の表示方法をご紹介します。

score

下記のクラスを作り画像で数字を表示しています。

Number.h

Number.cpp

大事な事は何百数字の画像を入れ替えてもメモリリークを起こさないように作る事です。新しい数字を表示する前に古い数字の画像をメモリから削除しています。

これを使いカウントダウンするサンプルです

HelloWorldScene.h

HelloWorldScene.cpp

サンプルで使用している数字の画像は以下にあります。

http://gameshonen.com/blog/uploads/figure_score.plist

http://gameshonen.com/blog/uploads/figure_score.png

きれいなコードではありませんが、そこそこ使い易いのでご紹介しました。ご参考になればと思います。

Pocket

cocos2d-xオーディオ再生

Pocket

くまのがっこう神経衰弱バトル

cocos2d-x 3.5ではAudioEngineを使えますが、くまのがっこう神経衰弱バトルではSimpleAudioEngineを使いました。全てのケースにあてはまるかわかりませんが苦労した点をご紹介します。

バックグラウンドに落としてからフォアグラウンドに復帰したときに「BGMが再生されない」「効果音が一切再生されなくなる」といった不具合が100回に1回くらいの割合で発生しました。iOSでもAndroidでも症状が確認されました。

ネットを調べてもあまり情報がありませんでしたが数人ほど同じ症状で苦しんでいる方がいて、一旦オーディオの処理を完全に停止して再開すれば症状が出なくなるとのことだったので以下の実装を行ったところ症状は出なくなりました。

AppDelegate.cpp

HelloWorldScene.h

HelloWorldScene.cpp

くまのがっこう神経衰弱バトルを遊んでいただくとわかるのですが、バックグラウンドからフォアグラウンドに復帰したときにBGMが停止してまた最初から再生されるのでちょっとカッコ悪いです。Androidはそんなに気になりませんが、iOSはよくわかります。

もうひとつ、効果音をIDを指定して停止しているところで100回に1回くらいの割合で効果音が停止しないという症状が出ました。いろいろ調べましたが全く原因がわからなかったので、効果音の停止をstopEffect(id)からstopAllEffects()へ変更したところその症状は出なくなりました。効果音が全て停止するので停止したくない効果音と重なっているときは使えない方法です。

次のゲームではAudioEngineやネイティブでの実装を試してまたここで結果をご紹介したいと思います。

Pocket

cocos2d-xタッチイベントの管理

Pocket

くまのがっこう神経衰弱バトル

くまのがっこう神経衰弱バトルではボタンの大きさに合わせてアクションの大きさを変えたり効果音を入れたりと細かい調整をしたかったので自分でボタンを作りました。タッチによる操作を受け付けるかどうかはフラグで管理しています。

HelloWorldScene.h

HelloWorldScene.cpp

みんなどうしているんだろう(´・ω・`)

Pocket