
유니티로 무언가 하다 보면 자동으로 색상을 변화시켜야 할 때가 있는데
유튜브에 간단한 강의가 있어서 따라 해보았다!
시작! 🍙
1. 오브젝트 만들기
큐브를 이용해 바닥과 도미노 모양의 오브젝트 5개를 만든다.
2. 머터리얼 할당
1. project > Create > New Material
2. Material 색상: 흰색
2. Cube > Mesh Renderer > Material 할당

3. ColorLerp 스크립트 작성
public class ColorLerp : MonoBehaviour
{
MeshRenderer cubeMeshRenderer;
[SerializeField]
[Range(0f, 1f)] float lerpTime; // 색상이 변하는 속도
[SerializeField]
Color[] myColors;
int colorIndex = 0;
float t = 0f;
int colorsLength;
void Start()
{
cubeMeshRenderer = GetComponent<MeshRenderer>();
colorsLength = myColors.Length;
}
void Update()
{
cubeMeshRenderer.material.color = Color.Lerp(
cubeMeshRenderer.material.color,
myColors[colorIndex],
lerpTime * Time.deltaTime);
// "t" to change colorIndex after lerping
t += lerpTime * Time.deltaTime;
if (t > .9f)
{
t = 0f;
colorIndex++;
if (colorIndex >= colorsLength)
{
colorIndex = 0;
}
}
}
}
3-1. 스크립트 설명
더보기
[Range(0f, 1f)] float lerpTime;
- 인스펙터에서 lerpTime 변수를 0~1사이의 슬라이더로 표시한다.
cubeMeshRenderer.material.color = Color.Lerp(
cubeMeshRenderer.material.color,
myColors[colorIndex],
lerpTime * Time.deltaTime);
- 큐브의 현재 색상을 목표 색상으로 일정한 속도로 전환한다.
- 변하는 속도 : lerpTime * Time.deltaTime
- 프레임 속도에 관계 없이 일정한 속도 유지를 위해 Time.deltaTime을 곱한다.
t += lerpTime * Time.deltaTime;
- 색상 전환의 진행 정도를 추적한다.
4. 변화할 색상 설정
스크립트를 각 오브젝트에 할당하고 색상을 설정한다.

5. LerpTime 값 설정
그러데이션으로 변화하는 효과를 주기 위해 오브젝트의 Lerp time 값을 각각 다르게 설정한다.
나는 0.92~1.0 사이의 값을 0.2 간격으로 설정!





참고 링크
Color Lerp in Unity
'Unity' 카테고리의 다른 글
| Unity: .ttf 폰트를 TMP 폰트로 변경하는 방법 (0) | 2024.08.11 |
|---|---|
| Unity 체력바 만들기 #Slider (0) | 2024.08.04 |
| Unity Ch7 - Collider, OnCollision, OnTrigger (0) | 2024.03.23 |
| Prototype4: 플레이어를 따라가는 몬스터, normalized, Time.deltaTime (0) | 2024.03.05 |
| Prototype5: MonoBehavior, Awake(), Start(), this vs gameObject (0) | 2024.03.01 |