using UnityEngine; using System.Collections; // アタッチしたSprite Rendererの色を操作してフェードアウトさせるスクリプト [RequireComponent(typeof(SpriteRenderer))] public class FadeOutSprite : MonoBehaviour { private SpriteRenderer spriteRenderer; public float fadeDuration = 1.0f; // 消えるまでの時間(秒) public float startDelay = 0.5f; // 表示してからフェードを開始するまでの待ち時間(秒) private void Awake() { spriteRenderer = GetComponent(); } private void OnEnable() { // オブジェクトが有効になったときにフェードアニメーションを開始 StartCoroutine(FadeOutCoroutine()); } private IEnumerator FadeOutCoroutine() { // 1. 最初は完全に表示 SetAlpha(1f); // 2. 指定時間待機(画像がはっきり見える時間) yield return new WaitForSeconds(startDelay); // 3. アルファ値を徐々に減らすフェードアウト float timer = 0f; Color initialColor = spriteRenderer.color; while (timer < fadeDuration) { timer += Time.deltaTime; // 経過時間に基づいてアルファ値を計算(1 -> 0) float alpha = Mathf.Lerp(1f, 0f, timer / fadeDuration); SetAlpha(alpha); yield return null; // 次のフレームまで待機 } // 4. 完全に消えたら自身を破棄(再利用しない場合) SetAlpha(0f); Destroy(gameObject); } private void SetAlpha(float alpha) { Color current = spriteRenderer.color; current.a = alpha; // Alpha値を更新 spriteRenderer.color = current; } }