유니티/기타

[Unity] Lerp함수

이름?없음 2024. 2. 11. 20:53
반응형

오늘은 유니티의 Lerp 함수에 대하여 알아보겠다

반응형

Lerp 함수란? : A와 B사이를 T로 선형 보간하는 함수들

어려워 보이는데 간단하게 이해가 가능하다

 

(a, b, t) 중 t가 0일 때 : a를 반환

(a, b, t) 중 t가 1일 때 : b를 반환

(a, b, t) 중 t가 0.5일 때 : a와 b의 중간점에 있는 값을 반환

 

수를 넣어보면 이렇다

 

(1, 10, t) 중 t가 0일 때 : 1을 반환

(1, 10, t) 중 t가 1일 때 : 10을 반환

(1, 10, t) 중 t가 0.5일 때 : 5.5를 반환

 

쉽게 말해서 A, B사이의 t 지점의 값을 반환한다고 이해하면 편하다

 

Lerp함수는 여러 구조체에 정의되어 있다

Mathf.Lerp

Vector2.Lerp

Vector3.Lerp

Quaternion.Lerp

Color.Lerp

등등

 

 

그러면 이것을 이용하여 페이드 인 페이드 아웃을 구현해 보도록 하겠다

 

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

public class Fade : MonoBehaviour
{

    [SerializeField] private float fadeSpeed;

    private Image targetImage;
    private bool isFade;

    private void Awake()
    {
        
        targetImage = GetComponent<Image>();

    }

    private void Update()
    {
        
        if(Input.GetKeyDown(KeyCode.Space))
        {

            if (isFade)
            {

                StartCoroutine(FadeCo(targetImage.color, new Color(0, 0, 0, 0)));

            }
            else
            {

                StartCoroutine(FadeCo(targetImage.color, new Color(0, 0, 0, 1)));

            }

        }



    }

    private IEnumerator FadeCo(Color origin, Color target)
    {

        isFade = !isFade;

        float per = 0;

        while(per < 1)
        {

            per += Time.deltaTime * fadeSpeed;

            //보간
            targetImage.color = Color.Lerp(origin, target, per);

            yield return null;

        }
        

    }

}

이렇게 코드를 작성하면 아주 쉽게 페이드 인 페이드 아웃이 구현이 가능하다

잘 작동하는 모습

 

반응형

'유니티 > 기타' 카테고리의 다른 글

[Unity] Mathf.InverseLerp  (0) 2024.02.11
[Unity] Visual Studio에서 유니티용 DLL만드는법  (0) 2024.02.08
[Unity] 구글 시트 연동하는법  (1) 2023.10.29