상세 컨텐츠

본문 제목

유니티 디졸브효과, 사라지는 셰이더, 은신 효과

유니티/기능

by MJ_119 2024. 7. 7. 10:49

본문

유니티 디졸브효과, 나타나는 효과, 사라지는 셰이더, 은신 효과, 몬스터 사망 효과

 

@ 간단한 기본적인 효과 :

Shader Graph -> URP -> Lit Shader Graph를 하나 만든뒤에 아래와 같이 설정하고 오브젝트에 적용하면 끝

 

 - simple noise의 Scale값을 조절하면 사라지는 표면을 얼마나 사라질지 조정할 수 있음.

 - 왼쪽에 + 눌러서 float 값 추가하고 Scale과 연결하면 인스펙터창에서 조절해가면서 볼 수 있음.

( 밑에서 색 추가하는 Color도 마찬가지 )

 

@ 사라지는 표면의 라인, 끝부분을 다른 색으로 하고싶으면 아래와 같이 진행

 

- float 추가한것처럼 Color도 추가해서 인스펙터창에서 조절 가능.

 

 

 

 @ 한번만 효과를 나타내고 싶으면 Time -> In으로 하고 Min, Max를 수정한다.

 

 

 

@ F 키를 눌렀을때 효과 나타나게 하기

using System.Collections;
using System.Collections.Generic;
using Unity.VisualScripting;
using UnityEngine;

public class DoorShader : MonoBehaviour
{
    public Material dissolveMaterial; // 디졸브 효과가 적용된 메테리얼
    private bool isDissolving = false; // 셰이더 활성화 여부
    private float shaderTime = 2.0f; // 셰이더에 전달할 시간값

    void Update()
    {
        if (Input.GetKeyDown(KeyCode.F))
        {
            isDissolving = !isDissolving;
        }

        if (isDissolving)
        {
            if(shaderTime > -1.0)
            shaderTime -= Time.deltaTime;
        }
        else
        {
            shaderTime = 2.0f;
        }

        dissolveMaterial.SetFloat("_shaderTime", shaderTime); //셰이더의 _ShaderTime 프로퍼티에 값 설정
    }

}

 

이 스크립트를 적용시킬 오브젝트에 넣고 디졸브 효과가 들어간 메테리얼을 넣어준다.

 

디졸브 셰이더 그래프에서 기존의 Time노드 대신에 Float 속성 하나 만들어서 Remap에 연결해주고 이름을 바꿔주고, 레퍼런스 이름을 잘 기억해서 스크립트에 이름과 맞춰준다.

 - 오브젝트가 나타나게할건지 사라지게할건지는  +와 -를 잘 구분해서 적용해본다.

shaderTime -= Time.deltaTime;

shaderTime += Time.deltaTime;

 

 

관련글 더보기