本投稿は2024年9月時点の内容になります。アップデートにより変更となる場合があります。また環境によって違いがあると思いますのであくまで参考として、ご了承ください。
様々な書籍、ブログや動画を参考にさせていただきました。多すぎて一つ一つはお紹介できませんが感謝です。
初心者の自分がUnity ソフトウエアでゲームを作ってみました。とりあえずシンプルなものということでモグラたたきに挑戦です。ゲーム作ってみるかという感じになったときに、いいタイミングで某ゲームのイベントシナリオ内ミニゲームにモグラたたきが実装されていたのでUIとかエフェクトとか、諸々の仕様をぱくって参考にして作ってみましたよ。様々なHowToの中の選択肢のひとつとして、同じ初心者さんの参考になればよいです。
\ チェック /
目次
パーティクルシステムを使ってエフェクトを作成していきます
Unity プロジェクトでエフェクトをつけるには主に2つ方法があります。
前回はアニメーションを使って自作しましたが、今回はパーティクルシステムを使っていきます。クリックすると星が出るエフェクトを作ってみたいと思います。
とはいっても、パーティクルシステムの設定項目はすごく多くて奥が深すぎるので、思いっきりざっくりと行きます。
本記事のポイント
- パーティクルシステムの使い方。
- 画像をパーティクルシステムで使いたいとき。
パーティクルシステムでエフェクトを作る
パーティカルをシーンに置いてみます
まずはパーティクルをシーンに置いてみましょう。
パーティクルシステムを使ったエフェクト実装例(その1パーティクルをシーンに置く)
- ヒエラルキー上で右クリック>エフェクト>パーティクルシステムをクリック 名前は「StarEffect」にしました。
- シーンビューに白い四角を出す噴水みたいのが出てきたと思います。これがパーティクルです。とりあえずTransformの位置を「0,0,0」にして原点に置きましょう
少しずつ設定していきましょう。
パーティクルの設定をいじってみよう
クリックして星が出るエフェクトを目指していきます。
パーティクルシステムを使ったエフェクト実装例(その2パーティクルを設定してみよう)
- 今はパーティクルを放出し続けています。クリックしたときだけで放出したいので、まずはループのチェックをはずします。これで再生を押すと「継続時間+開始時の生存時間」再生して止まると思います。
- まだ長いので「継続時間」を「0.4」、「生存期間」を「0.35」くらいにしてみます。
- 少し粒子が大きいので「開始時のサイズ」を「2つの値間でランダム」にして「0.2」と「0.8」に設定してみます。
- 少し散りすぎな感じがするので「開始時の速度」を少し遅くして「2.5」くらいにしてみます。
- 自動的にDestroyさせたいので「アクションを停止」を「破棄」に設定します。
- 次は「放出」を見てみます。「放出」のところクリックすると項目が開きます。
- 「バースト」の「+」をクリック 「時間」(放出のタイミング)を「0.1」、「数」を「5」に設定してみました。
- 次は「形状」を見てみます。
- 「スフィア(球状)」にして「半径の厚さ(放出のボリューム)」を「0.5」に設定しました。
- 散りながら回転させたいので「生存期間の回転」で「角速度」を「45」にしてみました。
- だいたい形が出来てきたので、「★」を出していこうと思います。
確認はパーティクルエフェクトパネルの再生で出来ます。
パーティクルシステムで画像を使う
パーティクルシステムで画像を使うとしましたが、実際は画像をそのまま使うことはできません。画像をマテリアルにして、そのマテリアルを使っていきます。なのでまずマテリアルを用意します。
パーティクルシステムを使ったエフェクト実装例(その3マテリアルの準備①)
- プロジェクトで右クリック>「作成」>「マテリアル」をクリック。名前は「Star」にしました。
- 作成したマテリアルを選択してインスペクターを確認します。「Shader」(陰影の計算処理方法)を選択します。パーティクルで使うので「Particle>StandardSurface」やもっと簡単に済ませたいなら「Mobile>Particle>Additive」あたりを、「UnivarsalRenderPipeline」を使用してる場合は「UnivarsalRenderPipeline>Particle>Lit」あたりを選択してください。
- 今回は「UnivarsalRenderPipeline>Particle>Lit」を使用します。
マテリアルがピンクになってしまった時
- 原因はShaderが環境に合ってないため。よくあるのが「UnivarsalRenderPipeline」を使っているのに「Standard」のシェイダーになってる場合です。
- その場合インスペクターでShaderを「UnivarsalRenderPipeline」のものに変更してあげる
- もしくはマテリアル選択した状態で「編集」>「レンダリング」>「選択したビルトインマテリアルをURPに変換」で直ると思います。
画像をマテリアルに適用します。Shaderによって設定方法は違います。今回は「UnivarsalRenderPipeline>Particle>Lit」の場合です
パーティクルシステムを使ったエフェクト実装例(その3マテリアルの準備②)
- インスペクターの「サーフェスオプション」を確認
- 「サーフェスタイプ」を「Transparent」します。
- 今回は★で明るくしたいので「ブレンドモード」を「Additive」(加算)にします。
- 「レンダー面」を「Both」にします。
- 「カラーモード」「Overlay」にしました。
- 「サーフェス入力」の「べースマップ」の小さい四角の部分に今回使う★の画像をドラッグアンドドロップします(色は#FDF0B5にしました)。
- マテリアルに画像が反映されたと思います。
マテリアルをパーティクルシステムに反映させます。
パーティクルシステムを使ったエフェクト実装例(その4マテリアルの反映)
- パーティクル「StarEffect」のインスペクターの「レンダラー」を確認
- 「マテリアル」を今作成した「Star」します。
- これでパーティクルシステムに画像が反映されたと思います。
- ソートレイヤーを「Effect」(作成してなかったらUIの奥になるように作成します)に変更。
- あとはお好みでいろいろ調整してみてください。
- 最後にプレハブ化します。
プレハブ化してInstantiateします
パーティクルシステムを使ったエフェクト実装例(その5スクリプト)
- スクリプトを変更して、プレハブ化したエフェクトをアサインします。
public class EffectManager : MonoBehaviour
{
//省略
[SerializeField] GameObject StarEffect;
//省略
//EffectManagerの子にScoreEffectをインスタンス化します
public void ShowStarEffect(Vector3 pos)
{
Instantiate(StarEffect, pos, Quaternion.identity, this.gameObject.transform);
}
//省略
}
スクリプトざっくり解説
- インスタンス化するコード
public void ClickedEnemyAction()
{
effectManager.ShowStarEffect(this.gameObject.transform.position);
//省略
}
スクリプトざっくり解説
- クリック時にエフェクトを出します。
パーティクルシステムを使ったエフェクトでした。ぜひいろいろなエフェクトを試してみてください。
まとめ
まとめ
- パーティクルシステムを使うといろいろなエフェクトが作れる。
- パーティクルシステムで画像を使いたいときはマテリアルを作成する。
- マテリアルがピンクになっているときはShaderのモードを確認してみる
\ Unityのスクリプトを書くのに役立ちます /
もっと早く教えてほしかった!Unity C#入門
MARU
\ 初学に使った書籍です /
動画×解説でかんたん理解! Unityゲームプログラミング超入門
大角 茂之/大角 美緒
おすすめ記事
Unity ソフトウエアでゲーム制作#1モグラたたき編(29.ゲームにBGM…
Unity ソフトウエアでゲーム制作#1モグラたたき編(28.ゲームに効果音…
Unity ソフトウエアでゲーム制作#1モグラたたき編(26.エフェクトその1)
Unity ソフトウエアでゲーム制作#1モグラたたき編(25.プレハブバリア…
Unity ソフトウエアでゲーム制作#1モグラたたき編(24.Buttonで…
Unity ソフトウエアでゲーム制作#1モグラたたき編(23.シンプルなアニ…