3Dモデルを粒子状にシュワッとフェードイン/アウトさせる事のできるアセットの紹介です。
付属していたReadmeの転載。
<<使用法>>
1. ‘TeleportFade’または ‘TeleportFade(Normal Map)’シェーダで素材を作成します。
2.その材料をメッシュに設定します。
3.パラメータを変更します。
4.お楽しみください!
なるほどわからん。
使用法の記述がテキトーすぎる。
そういう訳で一から説明するよ。
◆メニュー > Gameobject > Sphere
で、スフィアを作成します。
※キューブはポリゴン数が少なすぎるのか上手くいかなかったです
このシェーダーは座標も関係するので x,y,zを0に配置しましょう
◆マテリアルを新規作成して「TeleportFade」シェーダーにします
そのマテリアルはスフィアに適用しておきます
◆シェーダーの設定をインスペクター上でします
・アセットに付属していた「TeleportFadeNoise2」をFadeTextureにD&D
・パラメーターはとりあえず下図の様にしてください
◆シェーダー設定のスライドバーをFade Rateを1.0にするとスフィアがシュワッとフェードアウトします
しかしスライドバーで動かすだけでは実際のゲームで使い辛いので、スクリプトでフェードアウトさせます
using System.Collections; using System.Collections.Generic; using UnityEngine; public class SphereFade : MonoBehaviour { enum State //フェードステータス { None, FadeOut, FadeIn, } public GameObject fadeObject; public MeshRenderer[] fadeMeshes; public SkinnedMeshRenderer[] fadeSkinnedMeshes; List<Material> fadeMaterials = new List<Material>(); State state; float fadeTime; float fadeSpeed = 1.0f; //フェードスピード // Use this for initialization void Start () { //メッシュからマテリアルを取得 foreach (var mesh in fadeMeshes) { foreach (var material in mesh.materials) { fadeMaterials.Add(material); } } //スキニングメッシュからマテリアルを取得 foreach (var mesh in fadeSkinnedMeshes) { foreach (var material in mesh.materials) { fadeMaterials.Add(material); } } } // Update is called once per frame void Update () { fadeTime += Time.deltaTime; //フェード時間取得 float fadeDuration = 3.0f / fadeSpeed; //フェード期間 float fadeStartDelay = 0.0f / fadeSpeed; //フェード開始までのディレイ float fadeRate = 0.0f; switch (state) { case State.FadeOut: fadeRate = Mathf.Clamp((fadeTime - fadeStartDelay) / fadeDuration, 0.0f, 1.0f); break; case State.FadeIn: fadeRate = 1.0f - Mathf.Clamp((fadeTime - fadeStartDelay) / fadeDuration, 0.0f, 1.0f); break; } var basePos = new Vector4(); basePos.x = fadeObject.transform.position.x; basePos.y = fadeObject.transform.position.y - 1f; basePos.z = fadeObject.transform.position.z; foreach (var material in fadeMaterials) { material.SetVector("_ObjectBasePos", basePos); material.SetFloat("_FadeRate", fadeRate); } } //FadeOutボタンが押された時に呼ばれる関数 public void StartFadeOut() { fadeTime = 0.0f; state = State.FadeOut; } //FadeInボタンが押された時に呼ばれる関数 public void StartFadeIn() { fadeTime = 0.0f; state = State.FadeIn; } }
◆確認しやすい様にフェードイン/アウトのボタンを追加しています
これでシュワッとフェードイン/アウトが思いのままです。
わからない事あったらコメントくださいな
それではフェードアウトでお別れしましょう
<<パラメータ>>
*Fade Texture… TeleportFadeNoise1、TeleportFadeNoise2、または作成したノイズテクスチャを設定します。
*Rise power…フェーディングの比率を上げます。
*Twist power…ツイストパワー。フェーディングのツイスト比。
*Spread power …広げるパワー。フェージングでXZ比率を広げます。
*Particle color…フェーディングの発光色。 ゼロアルファなら、発光色は変化しません。
*Fade rate…フェージングレート。 このパラメータはスクリプトで制御します。
*Object height …フェードオブジェクトの高さを設定します。
*Object fade height …フェードの高さを設定します。
*Object base position…オブジェクトの位置を設定します。 オブジェクトが動いている場合は、このパラメータをリセットする必要があります。
<< Usage >>
1. Create a material with ‘TeleportFade’ or ‘TeleportFade (Normal Map)’ shader.
2. Set that material to meshes.
3. Change parameters.
4. Enjoy!
<< Parameters >>
* Fade Texture … Set TeleportFadeNoise1, TeleportFadeNoise2 or your created noise texture.
* Rise power … Rise up ratio in fading.
* Twist power … twist ratio in fading.
* Spread power … Spread XZ ratio in fading.
* Particle color … Emissive color in fading. If zero alpha, no emissive color change.
* Fade rate … Fading rate. You control this parameter in scripts.
* Object height … Set the fade object height.
* Object fade height … Set the fading height.
* Object base position … Set the object position. If the object moving, you have to reset this parameter.
<< Package >>
TeleportFadeShader/
Documents/
License.txt
Readme.txt
Samples/
Shaders/
TeleportFade.shader
TeleportFade_NormalMap.shader
Textures/
TeleportFadeNoise1.png
TeleportFadeNoise2.png