今回もUnityに関する話題で
Particle Systemを使った「斬撃エフェクト」の作り方
をご紹介するという内容になっております。
Unityで剣を使って攻撃するような剣戟アクションゲームを作っていると、その剣の軌跡のエフェクト(斬撃エフェクト)を自作したくなりますよね。しかし斬撃エフェクトは作るのが少し難しいので初心者の方からしたら「どうやって作ればいいんだろう?」と思うかもしれません。
そこでここでは昔ながらのParticle Systemを使って剣の振りに合わせた斬撃エフェクトを作る方法をご紹介しますね。
今回作る斬撃エフェクトのサンプル
まずはじめに、今回作る斬撃エフェクトのサンプル動画(GIF)を掲載しておきます。
剣の軌道に沿って伸びるオレンジ色の軌跡が斬撃エフェクトです。なかなかカッコいいでしょ?
一見すると作るのが難しそうに見えるかもしれませんが、コツさえつかめばParticle Systemでもこのようなエフェクトを割と手軽に作ることができます。
前提知識:Particle System vs VFX Graph
では早速エフェクトの作り方の説明に入りたいところですが、その前にUnityでエフェクトを作るときには
- 昔ながらのParticle System
- 最新機能のVisual Effect Graph(VFX Graph)
という2種類の機能が使えるので、プロジェクトでどちらを使うか予め決めておくことをお勧めします。(※ここでは皆さんお馴染みのParticle Systemを使うことにしましょう)。
Particle Systemは昔からあるエフェクト作成機能で古いUnityと互換性がありますし、ユーザー数もこちらの方が多いためエフェクトの作り方の情報が豊富なのが魅力です。一方VFX Graphはより高性能なParticle Systemの進化版ですが、プロジェクトのグラフィック描画形式によっては使えない場合もあります。どちらがいいのかはプロジェクト次第ですので都合のいい方を選んでくださいね。
ちなみにParticle SystemでできることはVFX Graphでもできます。斬撃エフェクトを作るときにVFX Graphを使いたいんだけど…という方は下記の内容を適宜読み替えて参考になさってください。
Particle Systemを使って斬撃エフェクトを作ろう
それではここからParticle Systemを使った斬撃エフェクトの作り方についてご説明していきます。新しいパーティクルオブジェクトを作ったら、Particle Systemコンポーネントの下記の項目を有効化して設定していきましょう。
- パーティクルの基本設定
- 放出設定
- 形状設定
- 生存期間の色
- トレイル設定
- レンダラー設定
パーティクルの基本設定
まずはパーティクルの基本設定を行います。下記の項目を変更してください。
- 継続時間:0.5程度(今回は一瞬だけパーティクルを生成するエフェクトなので0秒より大きければOK)
- ループ:OFF
- 開始時の生存期間:0.25~0.35程度
- 開始時の速度:0.1~0.2程度
- 開始時のサイズ:0.8~1
- ゲーム開始時に再生:OFF
今回はパーティクルそのものではなくパーティクルの軌道に沿って生成するトレイルが主役です。そのためここの設定は大雑把でかまいません。なおお分かりかと思いますがループするエフェクトではないのでループをOFFにしておきましょう。
放出設定
斬撃エフェクトは再生されるたびに一回だけパーティクルを生成します。そのため
- 時間ごとの率:0
- バースト:時間0のとき数60程度
というような設定を行ってください。瞬間的に多くのパーティクルを出したい場合はバーストを使いましょう。
形状設定
形状設定では剣に沿ったエフェクトが出るようにします。剣は一般的に棒状なので形状は「エッジ」を選択します。するとパーティクルのギズモが細い線のような見た目になるので、下図のように線が剣に沿うように位置や角度を調整してください。
生存期間の色
パーティクルの生存期間によって色を変更させます。最初は不透明で最後は透明になるようなグラデーションを作成しましょう。
トレイル設定
さてここが今回のエフェクトの肝となる部分です。下記のように設定しましょう。
- モード:パーティクル
- 最小頂点距離:0.05程度
- トレイル幅:適当な右肩下がりの曲線を設定
最小頂点距離を小さい値にすると斬撃エフェクトが滑らかになります。ただその分だけ処理負荷は増えるのでモバイルゲーム等の場合はもう少し大きい値にするといいかもしれません。
レンダラー設定
最後はレンダラーの設定です。次のように設定してください。
- レンダーモード:なし
- トレイルマテリアル:パーティクル用の適当なマテリアルを設定
パーティクル自体の描画を行う必要がないのでレンダーモードは「なし」でOKです。マテリアルは好きなように作って頂いてかまいませんが、今回は下記のようなマテリアルにしました。参考になさってください。
マテリアルのサーフェスタイプは「Transparent」(=透明)、ブレンドモードは「Additive」にするときれいな斬撃エフェクトになります。
おまけ:斬撃エフェクトの使い方
ちなみに上記の斬撃エフェクトを使う場合は、剣を振るタイミングでC#スクリプト等からParticleSystem.Play関数を呼び出してください。そうしないとエフェクトが再生されません。
おわりに
以上、UnityのParticle Systemを使った斬撃エフェクトの作り方をご紹介しました。
斬撃エフェクトがあると剣戟アクションゲームの見た目が派手になり面白そうに見えるようになるので、そのようなゲームを作っている場合はエフェクトを自作してみる価値があるのではないかと思います。ぜひ上記の内容を参考になさってください。
この記事がゲーム開発のお役に立てば幸いです。