Unityを使った3Dゲームの作り方(かめくめ)ゲーム開発エンジンUnityを使った3Dゲームの制作に参考になる情報を公開しています。2017.04.27今回は銃を撃った時に発砲の光の表示をし発砲音を鳴らします。弾が当たった場所にパーティクルを表示し当たった場所がわかりやすくなるようにしていきたいと思います。前回はFPSを作ってみよう13-JavaScriptからC#への書き換え-UnityのFPSゲームをJavaScriptで作ってきましたが、今回全てのスクリプトをC#に書き換えます。gametukurikata.com2017.04.20でスクリプトをJavaScriptからC#への書き換えを行いました。今後はC#スクリプトで処理を記述していきます。スポンサーリンク発砲の光、発砲音等を用意する今回使用する発砲の光や発砲音、弾が当たった場所に表示するパーティクルを用意してください。わたくしの場合はアセットストアで発砲の光のパーティクルを無料で見つけられなかったので、UnityのLightのみで光を表現するようにします。発砲の効果音、弾が当たった場所に表示するパーティクルはとりあえずそれらしい物を用意しておけば今回の記事と同じように作成する事が出来ます。後でちゃんとしたものを用意し取り変える事が出来ます。必要になったらそこから情報を取得して利用するようにします。現時点では効果音だけ保持しておき、他のは共通でもいいような気もしますが・・・まぁいいでしょう。WeaponStatusスクリプトに処理を追加します。shotEffect;}音声やパーティクルをインスペクタで設定出来るようにし、外部スクリプトからGetterを使って取得出来るようにします。エフェクトを設定するWeaponStatusでエフェクト情報を保持する事が出来るようになったので、エフェクトをゲームオブジェクトに設定し、WeaponStatusのインスペクタに設定します。銃を装備しているキャラクターの階層下のEquipの辺りを開きます。↑がEquip以下の武器の部分ですね。Sourceを追加します。Clipに銃の効果音を設定しておきます。Awakeのチェックを外しスタート時に音声が鳴らないようにしておきます。次に発砲時の光を設定します。今回はパーティクルの代わりにLightを使って表現します。ComponentからLightを追加します。LightのTypeはPointにし、Rangeや光の色の調整をします。銃を撃つまでは光を表示させないのでチェックを外し無効化しておきます。これでエフェクトの設定は終了です。Source、Lightのコンポーネントを設定します。弾が当たった時に表示するパーティクルをshotEffectに設定してください。これで銃を撃った時のエフェクト情報がWeaponStatusに保持されるようになりました。銃を撃った時にエフェクトを発生させる処理をShotに追加するWeaponStatusに銃を撃った時のエフェクト情報が保持されるようになったので、銃を撃った時にその情報を取得しエフェクトを発生させていきましょう。銃を撃った時の処理はShotスクリプトに記述しているのでそこに処理を追加していきます。ShotではWeaponStatusスクリプトはStartメソッドで取得しているので、その参照を使ってLightやAudioSourceのコンポーネントを操作します。false;}}privateのShotEffectメソッドを作ります。weaponStatusフィールドを介してGetShotSEメソッドを呼び出しAudioSourceコンポーネントを取得しそれを一旦止めた後に再生しています。これは弾を連続で撃った時に前の再生を止めてから再生する為です。次にGetShotLightメソッドでLightコンポーネントを取得し、一旦無効化した後に有効化します。光はすぐに消したいのでコルーチンを使って0.2秒後に無効化し光を消しています。コルーチンを使った処理でなくInvokeを使っても良さそうですね。エフェクトのメソッドが出来たので後は撃った時にShotEffectメソッドを呼び出す処理を追加します。();Judgeメソッドの直後にShotEffectメソッドの呼び出しを行います。これで銃を撃った時の効果音と光の処理が出来ました。次に撃った弾が当たった場所にパーティクルを表示させる処理を追加していきます。"Enemy"));この当たったゲームオブジェクトの情報(hits)はBlockとEnemyレイヤーに設定されたゲームオブジェクトしか入っていません。弾が他のゲームオブジェクトに当たった時にもパーティクルを表示したいので、これとは別に当たり判定をする事にしましょう。Quaternion.identity);}Physics.SphereCastを使って敵との当たり判定と同じようにします。何らかのゲームオブジェクトに当たっていた場合はif文内が実行されるので、そこでWeaponStatusのGetShotEffectメソッドでパーティクルのゲームオブジェクトをインスタンス化しています。パーティクルが表示されるのは弾が当たった位置で角度は親の要素(今回は親を設定しないのでワールドの角度)に設定します。これで弾が当たった位置にパーティクルが表示されるようになります。このパーティクルのゲームオブジェクトはインスタンス化したまま残ってしまうのでそれを消す処理が必要になってきます。パーティクルは繰り返し実行しないように設定し、スクリプトでパーティクルの再生が終わっていたら消すようにします。↑のようにパーティクルのLoopingのチェックを外しておけば1回再生したら止まります。パーティクルにDeleteParticleという名前の新しいスクリプトを作り設定します。(this.gameObject);}}}StartメソッドでParticleSystemの参照を取得しておきます。Updateメソッドではパーティクルが止まっていたらDestroyでこのスクリプトが設定されているゲームオブジェクトを削除しています。このスクリプトが設定されているのはパーティクルなのでパーティクルが削除されます。これで全てのエフェクトの処理が追加出来ました。銃を撃った時のエフェクトを確認する機能が完成したので銃を撃ってエフェクトを確認してみましょう。↑のようになりました。Lightを無効にしてみましたが、画面が暗くて他が確認し辛いですね・・・(^_^;)終わりにエフェクトを加えるとゲームが豪華になりますね!今回は銃を撃った時のエフェクトだけなので、その他にもゲームのBGMを追加したり歩いたり走ったりする時の効果音を加えたりするとよりゲームっぽくなってきます。コピーかめくめちゃんをフォローする7Unityを使った3Dゲームの作り方(かめくめ)Unityを使った3Dゲームの作り方(かめくめ)関連記事FPSを作ってみようFPSを作ってみよう7-アニメーションの作成とUnityでの取り込み-FPSゲームに使うアニメーションの作成とUnityでの取り込みまでを行います。アニメーション作成にはblender2.76bを使って作成していきます。FPSを作ってみようFPSを作ってみよう6-キャラクターのジャンプ機能を搭載する-FPSゲームでジャンプする機能を作成します。立っている時歩いている時と走っている時で飛ぶ高さを調整出来るようにしていきます。FPSを作ってみようFPSを作ってみよう3-スクリプトを使ってキャラクターを前後に動かしてみる-FPSゲームで使う主人公キャラクターにスクリプトを取りつけて前後左右にキャラクターが移動出来るようにしていきます。FPSを作ってみようFPSを作ってみよう1-FirstPersonCharacterを使ってみる-FPSゲームを作る為の第一歩、FPSゲームの動きをUnityに標準で搭載されているFirstPersonCharacterの中のFPSControllerを使って動きを確認します。FPSを作ってみようFPSを作ってみよう15-ゲーム用コントローラーに対応する-UnityのFPSゲームをパソコン用のゲームコントローラー(ゲームパッド)に対応していきます。FPSを作ってみようFPSを作ってみよう13-JavaScriptからC#への書き換え-UnityのFPSゲームをJavaScriptで作ってきましたが、今回全てのスクリプトをC#に書き換えます。Unityでアセットインポート時に処理をするUnityのDebugクラスを使ってゲーム開発に役立てるホーム作ってみようシリーズFPSを作ってみようスポンサーリンクサイト内検索が出来ますプロフィール管理人のかめくめちゃんです。(-_-)メールはこちらにお願いします(記事に関する質問は送らないでください、返信は期待しないでください(._.))。kamekumechan@gmail.comいずれはSIRENやバイオハザードみたいなアクションゲームを作りたいと思っています。ゲームシナリオが書けないので面白いゲームはなかなか作れません・・・・。(^_^;)名前の由来はカメが好きだからです。プロフィールになってないな・・・・(-.-)Unityをこれから始める人へこれからUnityを使ってみようという方はUnityを使った3Dゲームの作り方(かめくめ)の歩き方Unityを使った3Dゲームの作り方(かめくめ)で、はじめてUnityの学習をする時の当ブログの記事を読む順番を書きました。機能を積み上げていく形になるので便利かも?gametukurikata.com2019.06.21の記事に記載の順番で見て頂くとUnityの基本的な使い方がわかり、簡単なアクションゲームや、TPSゲームの作成までが出来ます。自作タイピングゲームタイピングゲームを作りました。WebGL形式なのでPCのブラウザで遊べます。以下からプレイ出来ます。FinalTypingUnityを使って作成したローマ字入力のタイピングゲームです。gametukurikata.com2022.01.02お知らせ2023/01/24個人的にUnity2022.2.3f1をインストールしました。2022/10/14UnityのIKを使って足の位置と角度を地面に合わせる機能Unityのゲームでキャラクターの両足が別の高さの地面の上にある時にそれぞれの足をそれぞれの地面につけるようにする機能を作成しますgametukurikata.com2016.04.11機能を少し修正しました。2020/09/19コメント欄は閉鎖しました。今までコメントを投稿してくださった方はありがとうございました。(^^)/2018/08/07わたくしに出来る事は既に記事にしてあるので、ブログ右上の検索窓を活用してください。(._.)またブログの最初の方の機能を積み上げていく記事に関しての疑問点は当ブログ記事のスクリプトの説明と寄せられた質問への回答Unityを使った3Dゲームの作り方(かめくめ)の機能積み上げ形式の記事のスクリプトの説明と寄せられた記事の機能についての質問への回答を掲載しています。gametukurikata.com2019.08.01Unityを使い始めたばかりの人がつまづきやすい点を解消するUnityを使い始めたばかりの人が結構な確率で陥る不具合や疑問点を解消していきます。基本的にはブログに寄せられた質問への回答という感じです。gametukurikata.com2018.12.04も参照してみてください。小・中学生によるデジタルコンテンツ開発の全国大会ですuycc.unity3d.jp2022年大会の先行エントリーが開始されているようです。当ブログはハイスピードプランです。WordPressの編集画面の動作が早くなった。当ブログはハイスピードプランです。WordPressの編集画面の動作が早くなった。記事の内容に質問がある方へUnityを使った3Dゲームの作り方(かめくめ)の歩き方UnityのJavaScriptとC#を読み替えてどちらでも対応出来るようにするホーム検索トップサイドバータイトルとURLをコピーしました。