Unityでキャラがダメージを受けた時に自作の血しぶきエフェクトを出す

以前の記事で敵キャラクターが登場時にエフェクトを出すというのをやりました。

Unityのエフェクトを使い、敵キャラの出現をわかりやすくします。エフェクトにはパーティクルをプレハブにしたものを使用し、スクリプトから敵の位置にインスタンス化していきます。

エフェクトはAsset Storeで探してきた物を使用しましたが、Unityではエフェクトを自分で作成する事も出来ます。

そこで今回はUnityで自前の血しぶきエフェクトを作成し、主人公の攻撃が敵に当たった、または敵から攻撃を受けた時に表示してわかりやすくします。

パーティクルの作り方

ヒエラルキー上で右クリック→Particle Systemを選択し、名前をBloodEffectとします。

パーティクルシステムはエフェクトを自分で作成する機能です。これを使って血しぶきに似たような物を作ってみます。

主人公用と敵キャラ用は同じエフェクトで色合いだけを変えるようにします。

まずは基本設定です。

血しぶきエフェクトパーティクルの基本設定

パーティクルが出現した時のスピードや色、サイズの指定等を行っています。

パーティクルには重力をより働かせる為、Gravity Modifierを0.5にします。

次はEmission等の設定です。

血しぶきエフェクトのEmission等の設定

ShapeをConeにしてコーン上にパーティクルが飛んで行くようにします。

次はパーティクルが出現してから消えるまでの色合いを設定します。

血しぶきエフェクトの色の設定

矢印の下が色合いで上が不透明度の設定になります。

色合いは変わらず、アルファ値だけを下げ少しづつ透明度を上げます。

次にSize over Lifetimeの設定です。

血しぶきエフェクトのサイズの設定

パーティクルは時間と共に小さくなっていくようにグラフを設定しました。

最後にCollisionの設定等を行います。

血しぶきエフェクトのその他の設定

パーティクルの衝突はWorld座標で行うようにします。

またBounceを0にし衝突した時にパーティクルが跳ね返らないようにします。

シーン上に配置されたエフェクトはシミュレーションが表示されています。

それを見ながらパラメータを調整し、血しぶきに見えるように変更していきます。

自作の血しぶきエフェクト

とりあえずこれで血しぶきのパーティクルが出来ました(すぐれたものではないですが・・・・)

あとはダメージを与えた時に敵キャラ用のエフェクト、ダメージを受けた時に主人公用のエフェクトを表示させます。

スポンサーリンク

スクリプトからエフェクトを出す

主人公操作スクリプトのTakeDamageとSetStateメソッドを修正します。

ダメージを受けた時の設定等はSetStateメソッドに移動させました。

パーティクルを出現させるのはダメージを受けた時にしたいので、TakeDamageメソッド内で処理を記述します。

damageEffectはインスペクタで設定出来るようにします。

GameObject.Instantiateでプレハブをインスタンス化し、位置をtransform.position + Vector3(0.0f, 1.0f, 0.0f)に設定します。

ここでいうtransform.positionはダメージを受けたキャラクターの位置で、キャラクターの基底の位置が足元になっているので、そこから1m上にパーティクルを表示する。ということになります。

transform.positionとするとそのスクリプトが設定されているゲームオブジェクトの位置を取得出来ます。

敵キャラクターのEnemyスクリプトにもdamageEffectフィールドとTakeDamageメソッドを追加します。

AttackSwordスクリプトで敵に攻撃を与えた時に直接SetStateメソッドを呼び出していましたが、TakeDamageを呼ぶように変更します。

他の方の作ったパーティクルを使ってスクリプトから表示したサンプルを最後に載せておきます。

エフェクト自体はダメージ用のエフェクトではないのでちょっとあれですが・・・スクリプトからエフェクトを表示する事が出来ました。

次回はまた音声関連をやって、少し華やかさを入れたい所ですね。

スポンサーリンク

記事をシェアして頂ける方はこちら

フォローして頂くとやる気が出ます