Unity 音ゲーの作り方6 音源データを準備/ノーツが音を鳴らして消える処理を作ろう

Unity C# 音ゲーの作り方


Unity入門の森オリジナル本格ゲーム制作講座はこちら
7種類の本格ゲームの全ソースコード公開・画像&動画による解説付き

今回は、Unity C# 音ゲーの作り方講座の第6回目ではノーツの役割を持つmusicboxゲームオブジェクトが音を鳴らして消える処理をチュートリアル形式で作っていきます。

前回の記事「Unity C# 音ゲーの作り方5 音ノーツが自動で流れるようにする/ボタンの仕組みを作成しよう」の続きを作っていきます。

まず、collisionboxとmusicboxを衝突させ、当たり判定を実装するためにコンポーネントの『Rigidbody』を活用します。

そして衝突したら音を鳴らしてノーツを消すスクリプトを作成していく流れです。


【Line登録者限定のプレゼントもあるよ!】

音ゲーのmusicboxにRigidbodyを付けてcollisonboxに衝突させよう

『Rigidbody』とは、オブジェクトに質量や抵抗力、重力などの物理的な特性を与えるコンポーネントです。

初期状態のオブジェクトは、他のオブジェクトに近づいてもすり抜けてしまいます。物理的な特性を持つと他のオブジェクトに当たった時に衝突します。これを当たり判定と言います。

それでは、musicboxに『Rigidbody』を追加していきましょう。

ヒエラルキーの中にある『musicbox.pink』の『>』を選択してください。

インスペクターの下にある『コンポーネントを追加』→『Physics』→『Rigidbody』を選択してください。

追加するとインスペクターに『Rigidbody』という項目が出てきますので以下のように内容を変更してください。

回転抗力   →   0
UseGravity(重力を使用)  →   チェックを外す
衝突判定   →   連続的

これで1つ目の『Rigidbody』の設定ができました。

ヒエラルキーにある『musicbox.pink』の『<』を選択して戻ります。

同じやり方で残り4つの『musicbox』オブジェクトにも『Rigidbody』を追加してください。

音ゲーのmusicboxの音を鳴らして消える仕組みを作ろう

それでは、『musicbox』と『collisionbox』が衝突した時の音を鳴らして消える仕組みについて説明していきます。

まず初めに衝突した時に鳴る音源をUnityに追加していきます。

『Assets』フォルダーの中に『Sound』フォルダーを作成してください。

以下の音源をダウンロードして『Sound』フォルダーの中にドロップさせてください。BGMとなる『shiningstar』音源もドロップさせます。

該当音源を右クリック→リンク先を保存で保存してください。

今回の講座では魔王魂様の音楽素材を使わせていただきました。他の音源に差し替えて使いたい方は参考にしてみてください。

Unityで音源ファイルをしようする時は、ファイル形式をwavにしてください。wav以外の場合、再生しても音が鳴らない可能性があります。

先にBGMの設定を行っていきます。

ヒエラルキーの中にある『MainCamera』を選択してください。

インスペクターにあるの『コンポーネントを追加』→『Audio』→『Audio Source』を選択してください。

『AudioSource』にある『オーディオクリップ』の◉を選択してBGM音源の『shining star』を選択してボリュームを『0.218』に設定してください。

『AudioSource』とは、音楽を再生する際の再生装置となる機能です。

これでBGMの設定は完了です。

次に『Script』フォルダーの中でスクリプトを作成して名前を『Collisionmusic』に変更してください。

以下のコードをCollisionmusic.csスクリプトに入力してください。

Collisionmusic.csスクリプトの解説をします。

音を鳴らすためには、音楽の再生装置を持たせて音源をセットする必要があります。以下のコードで再生装置を持たせて音源をセットできるような枠を作ります。

次に『musicbox』と『collisionbox』が衝突した時のコードを挿入します。

特定のオブジェクトと衝突させる時は、『OnCollisionEnter』関数の中にif文を使用して『Player』タグが付いているオブジェクトに限定させます。

後ほど『collisionbox』のタグを『Player』に変更します。

if文の中に衝突した時に発生させたい処理を挿入します。音ゲーの場合、音を鳴らすコードとオブジェクトを消すコードを挿入します。

 

コードの入力が完了したら『collisionbox』オブジェクトのタグを『Player』に変更します。

ヒエラルキーの中にある『collisionbox.pink』を選択してインスペクターの名前の下にあるタグ欄を『Player』に変更してください。

残り3つの『collisionbox』のタグも変更してください。

次にヒエラルキーの中にある『musicbox.pink』の『>』を選択してインスペクターに『Collisionmusic』スクリプトをドロップします。

ドロップした『Collisionmusic』スクリプトの『Sound』欄の◉を選択して音源の『dram』を選択してください。

ヒエラルキーにある『musicbox.pink』の『<』を選択して戻ります。

これで1つ目の『musicbox』と『collisionbox』が衝突すると音を鳴らして消える処理が完了しました。

同じやり方で残り4つの『musicbox』に設定していきましょう。以下に『musicbox』オブジェクトごとの音源を記載します。

musicbox.green   →    base

 

musicbox.blue    →    guitar

 

musicbox.orange   →    piano

 

musicbox.bakudan  →    bakudan

これで『musicbox』と『collisionbox』が衝突すると音が鳴って消える処理の設定が完了しました。

このままの状態だと『collisionbox』に『musicbox』が当たっても『collisionbox』は表示されたままのため非表示になるようにしていきます。

それでは、『Script』フォルダーの中でスクリプトを作成し名前を『NonActive』に変更してください。

以下に完成したNonActive.csスクリプトを入力してください。

こちらのコードは、『collisionbox』が他のオブジェクトに衝突した際に非表示になるコードです。

 

コードの入力ができたら『collision.pink』オブジェクトのインスペクターにドロップさせてください。

同じように残り3つの『collisionbox』のインスペクターにも『NonActive』スクリプトをドロップさせてください。

実行ボタン▶︎を押して『musicbox』と衝突した時に『collisionbox』が非表示になるか確認しましょう。

音ゲーの作り方第6回のまとめと次回について

第6回目の開発お疲れさまでした。

今回は、音ゲーのBGMや効果音が鳴る処理を実装しました。

Unityの物理エンジンの衝突判定とタグの設定を行ったことで『Push』ボタンを押した時に音が鳴って『musicbox』が消える仕組みを作ることができました。

次回は、第7回の「Unity C# 音ゲーの作り方7 スコアをカウントするスクリプトを作成しよう」です。

Unity C# 音ゲーの作り方7 スコアをカウントするスクリプトを作成しよう
Unity C# 音ゲーの作り方講座の第7回目、「スコアをカウントするスクリプトを作成しよう」をチュートリアル形式で説明していきます。 前回は音源データをゲームに組み込み、音ノーツを生成して流れる処理とタイミングよく叩くと音が鳴るし仕組み...


Unity入門の森オリジナル本格ゲーム制作講座はこちら
7種類の本格ゲームの全ソースコード公開・画像&動画による解説付き

コメント

タイトルとURLをコピーしました