[Unity] スプライトをフェードアウトさせる
Unity上でスプライトを徐々にフェードアウトさせる方法についてのメモ書きです。
これは簡単な爆発エフェクトなどに使えます。
スプライト描画を行うコンポーネントはSpriteRendererであり、この中にColorフィールドがあります。
Colorフィールドはスプライトの絵を貼り付ける下地となる紙のようなもので、この紙の色を自由に設定できます。
デフォルトは白色なので、スプライトの絵がそのままの色で貼り付けられるようになります。
Colorには透明度(=αチャネル)も指定することができます。
したがって、このαチャネルの値を変更ことで半透明のスプライトを表示したり、透明度を変化させることも可能です。
今回はこの機能を利用してスプライトをフェードアウトするスクリプトを書いてみました。
using UnityEngine; using System.Collections; public class Fadeout : MonoBehaviour { public float fadeTime = 1f; private float currentRemainTime; private SpriteRenderer spRenderer; // Use this for initialization void Start () { // 初期化 currentRemainTime = fadeTime; spRenderer = GetComponent<SpriteRenderer>(); } // Update is called once per frame void Update () { // 残り時間を更新 currentRemainTime -= Time.deltaTime; if ( currentRemainTime <= 0f ) { // 残り時間が無くなったら自分自身を消滅 GameObject.Destroy(gameObject); return; } // フェードアウト float alpha = currentRemainTime / fadeTime; var color = spRenderer.color; color.a = alpha; spRenderer.color = color; } }
上記スクリプトをフェードアウトさせたいGameObjectに追加すると、指定された時間でフェードアウトして最後には消滅します。
まずSpriteRendererコンポーネントを取得し、
spRenderer = GetComponent<SpriteRenderer>();
Update()メソッドの中でSpriteRendererのαチャネルを更新します。
// フェードアウト float alpha = currentRemainTime / remainTime; var color = spRenderer.color; color.a = alpha; spRenderer.color = color;
αチャネルを含め、色の各成分の取り得る範囲は0~1です。
完全にフェードアウトしきったら、自身をDestroyしてシーンから消滅させます。
if ( currentRemainTime <= 0f ) { // 残り時間が無くなったら自分自身を消滅 GameObject.Destroy(gameObject); return; }
これで冒頭で述べた動作を実現できます。
今回はSpriteRenderer限定ですが、この処理を少し応用すればマテリアルなどのフェードアウト処理も実現できます。
COMMENTS & TRACKBACKS
- Comments ( 0 )
- Trackbacks ( 1 )
-
[…] ftvlog [Unity]スプライトをフェードアウトさせる […]
コメントはまだありません。