💬

Unity Timeline メモ

2024/12/31に公開

指定したフレームでスクリプトのメソッドを呼び出し、フレネルエフェクトを自然に消す

Signal Receiverで可能。
以下が動画である。
https://youtu.be/_2osigbheHs
以下がソースコードである。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class TimeLineManager : MonoBehaviour
{

    private bool FrenelEffectOffFlg = false;
    private float FrenelEffectOffSpan = 0.0f;
    private Color startColor1;
    private Color startColor2;
    private Material obj1material;
    private Material obj2material;
    public SkinnedMeshRenderer obj1MeshRenderer;
    public SkinnedMeshRenderer obj2MeshRenderer;

    void Start()
    {
        obj1material = obj1MeshRenderer.material;
        obj2material = obj2MeshRenderer.material;
    }

    //フレネルエフェクトを消す
    public void FrenelEffectOff(){
        FrenelEffectOffFlg = true;
    }
    void Update()
    {
        //フレネルエフェクトを消す
        if(FrenelEffectOffFlg == true){

            if(startColor1 == Color.black&&startColor2 == Color.black){
                FrenelEffectOffFlg = false;
                return;
            }

            FrenelEffectOffSpan += 0.2f * Time.deltaTime;
            startColor1 = obj1material.GetColor("_FresnelColor");
            startColor2 = obj2material.GetColor("_FresnelColor");

            obj1material.SetColor("_FresnelColor", Color.Lerp(startColor1, Color.black, FrenelEffectOffSpan));
            obj2material.SetColor("_FresnelColor", Color.Lerp(startColor2, Color.black, FrenelEffectOffSpan));

        }
    }
}

参照サイト

Discussion