Lerp
1. κ°λ
μ ν 보κ°(Linear Interpolation)μ λ μ (a, b) μ¬μ΄μ κ°(c)μ ꡬνκΈ° μν΄ λ μ μ μ°κ²°ν μ§μ μ λ§λ€μ΄ μ¬μ΄ κ°(t)μ κ³μ°νλ λ°©λ²μ΄λ€.
Mathf.Lerp(float a, float b, float t)
μ¬κΈ°μ tλ percet(0 ~ 1)μ κ°λ μ΄κΈ° λλ¬Έμ t = 0μ΄λ©΄ a, t = 1μ΄λ©΄ bμ κ°λ€.
2. μ λν° νμ©
1) λΆλλ¬μ΄ μμ§μ
λΆλλ¬μ΄ μμ§μμ νννκΈ° μν΄ Update()μμ λ μ μ¬μ΄μ ꡬκ°μ μ§μμ μΌλ‘ μ΄λμμΌ νμ©ν μ μλ€. Update() ν¨μκ° νΈμΆλλ 맀 νλ μλ§λ€ μμΉλ κ³μ μμ§μΌ κ²μ΄κ³ λͺ©ν μ§μ μ κ·Όμ ν μλ‘ λμ± λΆλλ¬μ΄ μμ§μμ λνλ΄κ² λλ€.
void Update()
{
a = Mathf.Lerp(a, b, 0.5f);
}
tλ₯Ό νΉμ ν μμκ° μλλΌ Time.deltaTimeμ μ΄μ©ν΄μ μ μΈν΄μ£ΌκΈ°λ νλ€. Time.deltaTimeμ λ¨μ νλ μ λΉ μκ° λ³νλμ μλ―Ένλλ° λ³΄ν΅ 0.016μ΄ ~ 0.18μ΄ μ¬μ΄μ κ°μ κ°μ§λ€. Update() ν¨μ νΈμΆ μ PC μ¬μκ³Ό μ±λ₯ λλ μΈν°λ· νκ²½μ λ°λΌ μΌμ νμ§ μλ νλ μ κ° μκ° κ°κ²©μ΄ λ°μν μ μλ€. κ·Έλ° κ²½μ° κ³ μ μΈμκ°μ λκ²Όμ λ λΆκ·μΉν μμ§μμΌλ‘ μΈν΄ κ°κ²©μ μ€μ°¨κ° λ°μνκ² λλ€. κ·Έλ¬ν λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν΄ Time.deltaTimeμΌλ‘ κ° νλ μμ μ νν μκ° λ³νλμ κ΅¬ν΄ μ νν μ΄λ λ³νλμ κ³μ°νκ² λλ€. λμ±μ΄ speed λ³μ κ°μ κ³±ν΄μ£Όμ΄ μ’ λ λΉ λ₯΄κ±°λ λλ¦¬κ² μμ§μμ μ‘°μ ν μ μλ€.
float speed = 2f;
void Update()
{
a = Mathf.Lerp(a, b, Time.deltaTime * speed);
}
Time.deltaTimeμΌλ‘ λ°μμ¬ κ²½μ°, bκ° 1μ΄λΌλ©΄ κ·Έ κ°μ μμν λλ¬νμ§ λͺ»νκ² λλ€. λ°λΌμ κ°μ λλ¬νλμ§ μ¬λΆλ₯Ό νμ νλ €λ©΄ c == 1μ΄ μλ c >= 0.99999μ κ°μ΄ μ΅μνμ μ€μ°¨λ₯Ό ν¬ν¨νμ¬ νλ¨ν΄μΌ νλ€.
2) μΌμ μκ° λ΄ λλ¬
λͺ©μ μ§κΉμ§ μΌμ ν μκ°μ λλ¬νκΈ° μν΄μ νμ©ν μ μλ€. tλ₯Ό 0~100κΉμ§ κ³μν΄μ λλ €μ£Όκ³ 2λ‘ λλ μ£Όλ©΄(/2) λλ€. λ³΄ν΅ λ°λμ ν΄λΉ μκ°κΉμ§ λμ°©ν΄μΌ νλ κ²½μ° μ¬μ©νλλ° λ¦¬λ¬κ²μμμ λ ΈνΈλ₯Ό μ°μ λ μ¬μ©λλ€.
currentTime += Time.deltaTime;
Vector3.Lerp(transform.position, target.position, currentTime / 2);
3) μν λΈλ λ©
RBGA μ±λμμ λ κ°μ§ μμ μμ λ νμ©ν μ μλ€. 1 - aκ° 0μ΄λ©΄ κΈ°λ³Έ μμ΄μ§λ§ μ μ μ«μκ° μ»€μ§μ λ°λΌ λ κ°μ§ μμμ΄ μμ΄λ κ²μ νννλ€. μμμ μμ λ λͺ νΌμΌνΈ λΉμ¨λ‘ μμ μ§μ λν΄ κ³ λ―Όν λ μ¬μ©νλ€. μ΄λ₯Ό μμ©νλ©΄ μ¬ μ ν μ Fade In/Out κΈ°λ₯μΌλ‘ ꡬνν μ μλ€.
(1 - a) * s + a * T
4) 물체μ μ΄λ
μ λλ©μ΄μ μμ λ€μν μ΄λμ ννν λ νμ©ν μ μλ€.