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

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

Unityのエフェクトを使い、敵キャラの出現をわかりやすくする
Unityのエフェクトを使い敵がフィールドに出現した時に演出をして出現した事がわかるようにします
エフェクトはAsset Storeで探してきた物を使用しましたが、Unityではエフェクトを自分で作成する事も出来ます。

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

パーティクルの作り方


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

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

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

パーティクルの設定1

パーティクルの設定2

シーン上に配置されたエフェクトはシミュレーションが表示されています。
それを見ながらパラメータを調整し、血しぶきに見えるように変更していきます。

パーティクルに設定するマテリアル

Rendererに設定するマテリアルはAssetsエリア上でCreate→Materialを選択し、ShaderはParticle AlphaBlendedを選択します。
TintColorは血しぶきの色に設定します。

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

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

スポンサーリンク

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

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

パーティクル変数particleはpublicで宣言し、インスペクタで設定します。
GameObject.Instantiateでプレハブをインスタンス化し、位置をtransform.position + Vector3(0.0f, 1.0f, 0.0f)に設定します。

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

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

主人公も敵キャラもNockBack関数を持っているので、同じように設定し、インスペクタで違うパーティクルを設定すれば、
それぞれの血しぶきエフェクトが呼ばれます。

血しぶきエフェクト

正直全然血しぶきに見えませんね!
どうみても花吹雪って感じですが・・・・、Asset Storeでそれらしいのを見つけられなかったので、自分で作成してみましたが、うまい具合にいきませんでした。

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