Unityを使った3Dゲームの作り方(かめくめ)Unityを使った3Dゲームの作り方(かめくめ)ゲーム開発エンジンUnityを使った3Dゲームの制作に参考になる情報を公開しています。0今回はゲームっぽくする為にUnityでBGMの設定と細かなところに効果音を設定してみます。前回は主人公と敵が攻撃を受けた時に血のエフェクトを発生させました。Unityでキャラがダメージを受けた時に自作の血しぶきエフェクトを出すUnityで主人公キャラや敵キャラがダメージを受けた時にスクリプトからダメージエフェクトを表示させる機能を作成します。Music)はゲーム中にずっと流す音でループ再生して永遠に流れるようにします。効果音はインスペクタで音声を指定し、スクリプトで音声を鳴らすようにします。BGMは常に流れるのでMainCameraに設定し、効果音は敵が攻撃してくる時と剣を振る時に鳴らします。↑のような感じにゲームに豪華さがうまれます。(^^)/懐中電灯を持っている時は攻撃のアニメーションをしても鳴らさないようにするので、今持っているのがただの持ち物か武器かを判定して区別する必要があります。今回の記事では以前作成したスクリプトに処理を追加していますが、以前作成したスクリプトはどんなだったかを知りたい方はUnityを使った3Dゲームの作り方(かめくめ)の歩き方Unityを使った3Dゲームの作り方(かめくめ)で、はじめてUnityの学習をする時の当ブログの記事を読む順番を書きました。21:43の記事で今までの流れが確認出来ます。Sourceを追加し、AudioClipを設定します。PlayOnAwakeでインスタンスが登場したと同時に再生されます。Loopにチェックを入れているので、音声が永遠に流れます。packをインポートしました。Clipに選択しました。これでBGMの設定は終了です。敵がうめき声を出すようにする次に敵が攻撃する時にうめき声を出すようにします。敵の行動を処理するスクリプトEnemyにフィールドを宣言します。();とコンポーネントを取得する処理を追加します。AudioSourceはUnityのエフェクトを使い、敵キャラの出現をわかりやすくするUnityのエフェクトを使い、敵キャラの出現をわかりやすくします。エフェクトにはパーティクルをプレハブにしたものを使用し、スクリプトから敵の位置にインスタンス化していきます。11:09で使っているので、すでに追加されています。追加されてない場合は追加してください。AudioSourceのPlayOnAwakeのチェックを外し、Loopのチェックも外します。AudioClipには何も設定する必要はありません。スクリプトから追加するようにAppearSEスクリプトでしている場合は追加処理を削除した処理に書き換えます。(appearSE);}}あとはEnemyスクリプトのSetStateメソッドのAttack状態へと変更する処理で音を鳴らすようにします。true);audioSource.PlayOneShot(attackSound);これで敵キャラが攻撃時にうめき声をあげる事になります。敵キャラの攻撃機能に関してはUnityで敵キャラが主人公に近づいた時に攻撃をしてくる機能Unityで敵キャラが主人公に近づいた時に攻撃をしてくる機能を作成していきます。20:07を参照してください。剣を振った時に効果音を鳴らす最後に主人公が剣を振る時に音声を鳴らす処理です。Sourceを取り付けておきます。PlayOnWakeとLoopのチェックを外しておきます。Soundsをインポートしました。20:11を参照してください。equipTransform;を宣言します。Sounds→Slashing→Slash1を設定しました。equipTransformは今装備している武器を知る為に主人公のEquipゲームオブジェクトをインスペクタで設定します。StartメソッドにAudioSourceコンポーネントを取得する処理を記述します。();主人公のアニメーションイベント受け取りスクリプトであるProcessCharaAnimEventのAttackStartメソッドが剣を振り始める時に実行されるので、剣を振る音もそこで鳴らす事にします。(attackSound);}}装備をスクリプトからインスタンス化しひとつしか持たないようにしている場合はequipの子要素の1番目が武器になるので、その武器にSwordタグが設定されているかどうかを調べ、Swordであれば攻撃用の音声を鳴らしています。武器となるインスタンスまたはプレハブにSwordというタグを作り、Tagに指定しておきます。する事で、武器でなければ剣を振った時の音をならさないようにします。持ち物にタグを指定すれば鳴らす音を変更させるという事もできるようになります。{audioSource.PlayOneShot(attackSound);}上のようにゲームオブジェクトの名前で判断することも出来ます。Broadsword(Clone)となっているのは武器のプレハブをインスタンス化する時に名前を設定していないので、デフォルトで『プレハブ名(Clone)』という名前になるためです。weapons[equipment].name;上のようにインスタンス化したゲームオブジェクトの名前を指定すると(Clone)が付かなくなります。Blendの設定を2Dにして必ず聞こえるようにしています。音が鳴った場所によって音声の聞こえ方を変えたい場合はMainCameraのAudioListenerを削除し、主人公にAudioListenerを取り付けて主人公の位置に応じて音声の強弱が変わるようにします。Blendを3Dにドラッグします。これで主人公の位置に応じて効果音の強弱が変わります。終わりにこれでBGM、敵キャラの声、剣を振る音を付ける事ができました。音声があるとグッとゲームっぽくなりますね~。敵が声を発するのは攻撃開始時にしてますが、主人公と同じようにアニメーションイベントの受け取りに反応して音声を鳴らすようにしてもいいですね。攻撃開始時の方が敵が攻撃するぞ!というのがわかって良いのかも?悪いのかも?次回はキャラクター毎に独自のステータス保持スクリプトを持って管理出来るようにしてみます。コメントをキャンセルメールアドレスが公開されることはありません。コメントデータの処理方法の詳細はこちらをご覧ください。サイト内検索が出来ますプロフィール管理人のかめくめちゃんです。(-_-)メールはこちらにお願いします(記事への質問はコメント欄にお願いいたします)。kamekumechan@gmail.comいずれはSIRENやバイオハザードみたいなアクションゲームを作りたいと思っています。ゲームシナリオが書けないので面白いゲームはなかなか作れません・・・・。(^_^;)名前の由来はカメが好きだからです。Д`)シクシク...お知らせ2020/01/18個人的にUnity2019.2.18f1をインストールしました。2020/01/01あけましておめでとうございます。(^^)/ユニティちゃんのRPGを作ってみようのPartyStatusスクリプトでpartyMembersのListの型がCharacterStatusとなっていたのでAllyStatusに変更しました。変更したというか、元々AllyStatusに書き換える前のスクリプトを掲載していたので修正しました。ユニティちゃんのRPGを作ってみよう10ーコマンド画面の作成とステータスの表示ーユニティちゃんのRPGでコマンド画面の作成とステータスコマンドを作成し、選択したキャラクターのステータスを表示するようにしていきます。20:00GetPartyStatusメソッドの戻り値もそれに伴って変更しています。2018/08/07コメント欄へのわたくしの返信は停止しております。わたくしに出来る事は既に記事にしてあるので、ブログ右上の検索窓を活用してください。(._.)またブログの最初の方の機能を積み上げていく記事に関しての疑問点は当ブログ記事のスクリプトの説明と寄せられた質問への回答Unityを使った3Dゲームの作り方(かめくめ)の機能積み上げ形式の記事のスクリプトの説明と寄せられた記事の機能についての質問への回答を掲載しています。21:41も参照してみてください。コメントの返信はありませんが、回答は記事に反映されている可能性があります。当ブログはハイスピードプランです。WordPressの編集画面の動作が早くなった。Unityを使った3Dゲームの作り方(かめくめ).。