suta-togamennwakarann
This commit is contained in:
55
Assets/_Scripts/FadeOut.cs
Normal file
55
Assets/_Scripts/FadeOut.cs
Normal file
@@ -0,0 +1,55 @@
|
||||
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<SpriteRenderer>();
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user