効果音を鳴らす前回までの実装により、コインは転がり穴には落ちる。ゴールすれば景品も出る。何かというか、音です。コインがぶつかる音があるだけで、リアリティがまるで変わります。そんなわけで、ゲームの大切な要素、効果音を鳴らしてみましょう。今回は効果音を作成することにしました。ネット上にフリー素材が山ほどありますが、それは使用に関してフリーなだけで大体は再配布禁止です。githubでの公開には問題があるため、自分で作ることにしました。効果音を録音する(マイクで)コインの音は簡単に録音できます。一人ではっちゃけて歌いたくなったのでこんなマイクを持っていますが、別にヘッドセットのマイクや、スマートフォンなどでも十分録音できます。コイン音は3つ録音しました。投入口からコインを入れた音http://surfrog.net/web/wp-content/uploads/2016/06/coin_entry.wavコインがレールなどに接触した音http://surfrog.net/web/wp-content/uploads/2016/06/coin_contact.wavコインが穴に落ちた時の音http://surfrog.net/web/wp-content/uploads/2016/06/coin_hole.wav効果音を作成する(ソフトウェアで)ゴールした時の電子音などはBeam2002を使って作りました。Beam2002はアナログシンセ風の効果音作成ソフトウェアです。ADSRを操作するいわゆるエンベロープ・ジェネレーターのようなことができるソフトです。レバー操作時の音と、ゴール時の音を作成しました。レバー操作時の音http://surfrog.net/web/wp-content/uploads/2016/06/lever.wavゴール時の電子音http://surfrog.net/web/wp-content/uploads/2016/06/goal.wav次はこれらを10円ゲームに組み込み、再生します。効果音を鳴らす効果音が用意できたので鳴らしてみることにします。Cocos2d-xで効果音の再生はCocosDenshionクラスを使用します。Denshion、でんしおん、つまりは電子音です。init()で使用する効果音をプリロードしておきます。サウンドのプリロードCocosDenshion::SimpleAudioEngine::getInstance()->preloadEffect("se/coin_entry.wav");CocosDenshion::SimpleAudioEngine::getInstance()->preloadEffect("se/coin_contact.wav");CocosDenshion::SimpleAudioEngine::getInstance()->preloadEffect("se/coin_hole.wav");CocosDenshion::SimpleAudioEngine::getInstance()->preloadEffect("se/goal.wav");CocosDenshion::SimpleAudioEngine::getInstance()->preloadEffect("se/lever.wav");}CocosDenshionは拡張クラスなので、SimpleAudioEngine.hをインポートします。後は効果音を鳴らしたい箇所でplayEffect()を実行するだけで、効果音を鳴らすことが出来ます。効果音を鳴らすCocosDenshion::SimpleAudioEngine::getInstance()->playEffect("se/coin_entry.wav");}これでコイン投入口をタッチした時に、お金を投入する効果音が鳴ります。同じように、コインが穴に落ちた時の音、ゴール時、レバー操作時も該当箇所にコードを実装するだけです。「コインがレールなどに接触した音」を作成しましたが、この音を鳴らすには、コインの接触を検知する必要があります。コインの接触を検知するには、剛体が接触した時のイベントを受け取るイベントリスナーを使います。contact);};タッチイベントと同様に、接触イベント用のリスナーを生成して定義したonContactBeginメソッドを設定、イベントリスナーへ登録することで準備完了です。this);これで剛体同士が接触する時のイベントを受け取ることができるようになりますが、接触イベントはまだ発生する設定になっていません。bitmask)でマスクの設定を行う必要があります。この値はデフォルトで0のため、0以外に設定しないと接触イベントが発生せず、イベントを受け取ることができません。デフォルトが0なのは剛体の接触イベントは大量に検知してしまうため、必要なものだけ検知してパフォーマンスを維持するためです。接触イベントの検知マスクcoinPhysics->setName("coin");接触イベントのビットマスク設定をそれぞれ設定しました。コインは接触時に識別したいのでsetName()で名前を付けて置きます。contact)で衝突を検知できるので、効果音を鳴らすコードを実装します。contact)は、2つの物体が衝突した際に呼ばれます。引数contactにより、衝突した2つの物体を取得することができますが、getShapeA()かgetShapeB()がコインかどうかであることと、コインが接触した場合どちらがコインかがわかりません。コインに名前を付けたのはこの判断をするためです。名前を取得してコインなら効果音を鳴らすことで、コイン接触音を適切なタイミングで鳴らすことができるようになります。※音が小さいかもしれません。ソースコードはこちら次回はユーザビリティを向上のためにスプライトアクションを実装します。第8回、レバー操作とコインをはじく処理を追加します。クレーンゲームを作る前回、タイトル画面の製作記についてあれこれ書きました。今回はゲーム本編、クレーンゲームそのものの製作についてです。Engine4で作ったゲームを提出しました。備忘録を兼ねて、制作記を書いていこうと思います。第7回、10円ゲーム筐体の物理設定を追加してコインと衝突させます。第6回、物理エンジンを使用してコインを動かします。第12回、パーティクルを使ってエフェクトを発生させます。第5回、画像(スプライト)を表示してみます。10円ゲームって?Cocos2d-xで10円ゲームを作るチュートリアル第一回、10円ゲームについての説明です。v3.10のインストール方法について。開発環境の準備になります。コメントをキャンセルメールアドレスが公開されることはありません。したら英単語を学習できるかもsurfrog.netだいあリス日めくり帳にメモっておくような手軽さを重視したカレンダーメモアプリです。Block!ブロックを動かしてゴールへ導く、5秒で理解できるパズルゲームです。ステージが進むと特殊なブロックも出現し、一筋縄ではいかなくなってきます。pointタッチ精度測定、向上ゲームアプリです。surfrog.net最近の投稿コストコ尼崎のガソリンスタンドオープン。