Unityに関連する記事です




ConditionEffect スクリプトを作成する


 ConditionEffect は、コンディション用のエフェクトのゲームオブジェクトにアタッチして使うスクリプトで、
そのエフェクトがどのコンディションのエフェクトであるかを設定する役割を持っています。


ConditionEffect.cs

 <= クリックすると開きます。


 スクリプトを作成したらセーブを行います。


コンディション用のエフェクトの作成  鴫菫の場合ー


 既存のエフェクト用のゲームオブジェクトでもよいですし、自作したエフェクトでも構いません。

 画像でエフェクトを作成する場合には、ヒエラルキーの空いている場所で右クリックをしてメニューを開き、
2D Object => Sprites => Square を選択します。画像の設定のない2Dのゲームオブジェクトが作成されます。
このタイプのエフェクトは、1枚の画像をスクリプトからアニメーションさせる(DOTween で動かす)ことでエフェクトとします。


実装動画
動画ファイルへのリンク


 ゲームオブジェクトの名称は、コンディションの名称を利用し、Effect_<ConditionType> としておくと判別しやすくなります。

 この例では Sleep 用のコンディションのエフェクトを作成しているので、名称は Effect_Sleep としています。
 


 エフェクトに使用する画像を Unity へインポートし、TextureType を Sprite(2D & UI)に設定します。
今回は無料の画像を利用しています。

 最後に ConditionEffect スクリプトをアタッチして、ConditionType を Sleep に設定します。


インスペクター画像



Sceneビュー画像


 
 以上で完成です。
問題がなければプレファブにして、ヒエラルキーから削除してください。


コンディション用のエフェクトの作成◆ 鴫菫を用いたパーティクルの場合ー


 エフェクトにパーティクルを使う場合、1枚の画像を利用して作成することもできます。
この場合、粒子として放出される部分に1枚の画像の情報が利用されます。

 1枚の画像そのものはパーティクルに直接登録できないため、マテリアルを作成して、そちらに画像を登録し、
そのマテリアルをパーティクルとして放出するようにすることで実装出来ます
なお、複数の画像があって、それを1枚の動画としてスプライトアニメーションさせる場合には、別の手法があります。


<実装動画>
動画ファイルへのリンク


 最初にエフェクトに使用する画像を Unity にインポートします。今回は無料の画像を利用しています。
TextureType には Sprite(2D & UI) を設定します。


画像のインスペクター




 次にマテリアルを新規作成し、こちらの画像を設定します。

 マテリアル用のフォルダを用意し、その中で Create => Material を選択します。
新しいマテリアルが作成されますので、名称はコンディションの名称がわかるようにしておくといいでしょう。

 マテリアルのインスペクターを確認し、上段にある Shader の設定を Unlit/Transparent に設定します。
この設定にすることで1枚の画像を登録し、その画像の拡張子が PNG であれば、画像の周囲を透明にして表示することが出来ます。
 
 Shader の設定の右下にある Select と書いてあるボタンを押すか、この部分に画像をドラッグアンドドロップしてアサインすることでマテリアルに画像が設定されます。

マテリアルのインスペクター画像




 最後にパーティクルを新規作成します。

 ヒエラルキーの空いている場所で右クリックをしてメニューを開き、Effects => Particle System を選択します。
パーティクルが作成されますので、名称を Effect_<ConditionType> として変更します。
今回の例では Confusion のコンディションのエフェクトを作成していますので、Effect_Confusion に変更しています。

 ConditionEffect スクリプトをアタッチして、ConditionType を Confusion に設定します。

 続いて、パーティクルの内容を設定します。

 メイン設定の中のうち、Looping にチェックをいれて、ループを行うように設定します。
MaxParticles の数は画面内に一度の表示されるパーティクルの数になりますので、3 〜 5 前後に設定します。

 Shape のモジュールを開き、Shape 欄を Box に設定します。

 Renderer モジュールを開き、Material 欄に先ほど作成したエフェクト用のマテリアルをドラッグアンドドロップしてアサインします。
Sorting Layer ID を Chara にし、Order in Layer を 1 に設定します。これでプレイヤーよりも手前に表示されます。


インスペクター画像



インスペクター画像



インスペクター画像



 以上です。
ゲーム画面でパーティクルの再生を行い、設定した画像が実装動画のようにパーティクルとして放出されれば完成です。

 問題なければプレファブにして、ヒエラルキーからは削除しておきます。


ConditionEffectManager スクリプトを作成する


 コンディションが付与された際の各エフェクトを登録して管理しておくためのクラスです。
エフェクトが生成されることで、現在、どのようなコンディションが付与されているかをユーザーに伝えることが出来ます。

 ConditionEffectManagerは、すべてのコンディション用のプレファブを管理するマネージャークラスで、シングルトンです。
ここに ConditionEffect のアタッチされているプレファブをアサインして、必要なクラス内で参照して利用します。
いずれのクラスからでも参照しやすいように、シングルトンでの作成をしています。

 コンディションがプレイヤーにアタッチされたタイミングで、専用のエフェクトがある場合にかぎり、
ConditionEffectManager クラスにエフェクトの情報をもらって、対象となるエフェクトを生成する、という処理の流れです。

 例えば、睡眠のコンディションであれば、:zzz: みたいなエフェクトを作成し、 ConditionEffectManager にアサインしておきます。
実際に睡眠のコンディションがプレイヤーにアタッチされたら、ConditionEffectManager を参照して、:zzz: エフェクトを生成します。
 

ConditionEffectManager.cs

 <= クリックすると開きます。


 スクリプトを作成したらセーブを行います。


ConditionEffectManager ゲームオブジェクトを作成し、ConditionEffectManager スクリプトをアタッチして設定を行う


 Stage シーンにおいて作成します。

 ヒエラルキーの空いている場所で右クリックをしてメニューを開き、Create Empty を選択します。
新しいゲームオブジェクトが作成されますので、名前を ConditionEffectManager に変更します。


ヒエラルキー画像



 先ほど作成した ConditionEffectManager スクリプトをドラッグアンドドロップしてアタッチします。

 コンディションのエフェクト用のゲームオブジェクトをアサインするため、public 修飾子である List 変数が表示されますので、
こちらにコンディションのエフェクト用のゲームオブジェクトの各プレファブをドラッグアンドドロップしてアサインしてください。順不同です。
この際、List の型は ConditionEffect 型になっていますので、ゲームオブジェクトに ConditionEffect クラスがアタッチされていないとアサインできません。


インスペクター画像


 以上でコンディションを付与された際のエフェクトを運用するための準備が整いました。


コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Menu



プログラムの基礎学習

コード練習

技術/知識(実装例)

2Dおはじきゲーム(発展編)

2D強制横スクロールアクション(発展編)

3Dダイビングアクション(発展編)

2Dタップシューティング(拡張編)

レースゲーム(抜粋)

2D放置ゲーム(発展編)

3D脱出ゲーム(抜粋)

2Dリアルタイムストラテジー

2Dトップビューアドベンチャー(宴アセット使用)

3Dタップアクション(NavMeshAgent 使用)

2Dトップビューアクション(カエルの為に〜、ボコスカウォーズ風)

3Dトップビューアクション(白猫風)

VideoPlayer イベント連動の実装例

VideoPlayer リスト内からムービー再生の実装例(発展)

AR 画像付きオブジェクト生成の実装例

AR リスト内から生成の実装例(発展)

private



このサイト内の作品はユニティちゃんライセンス条項の元に提供されています。

管理人/副管理人のみ編集できます