본문 바로가기
유니티 공부/Unity

Unity - randomColor 만드는 법 및 HSV, RGBA 설명

by 코딩하는 돼징 2023. 5. 22.
반응형

1. randomColor.HSV

HSV는 Hue(색조), Saturation(채도), Value(명도)로 구성되어 있다.

public static Color ColorHSV();
public static Color ColorHSV(float hueMin, float hueMax);
public static Color ColorHSV(float hueMin, float hueMax, float saturationMin, float saturationMax);
public static Color ColorHSV(float hueMin, float hueMax, float saturationMin, float saturationMax, float valueMin, float valueMax)

매개 변수

출처 : https://en.wikipedia.org/wiki/Hue

hueMin, hueMax - 0부터 1사이의 값을 가진다. 0은 빨강, 0.33(120/360) 초록, 0.67(240/360) 파랑이다.

출처 : https://helloartsy.com/what-is-saturation/

saturationMin, saturationMax - 0부터 1의 값을 가진다. 0에 가까울수록 무채색을 가지고 1에 가까울수록 진한색을 나타낸다.

valueMin, valueMax -  0부터 1의 값을 가진다. 0은 완전히 어두운 상태를 나타내며 1은 최고로 밝은 상태이다.


Code 예시

01 매개변수 아무것도 지정 안할 시

void Start()
{
    Color randomColor = Random.ColorHSV();
    for(int i = 0; i<3 ; i++)
    {
        GameObject child = Instantiate(cube);
        Renderer renderer = child.GetComponent<Renderer>();
        child.transform.position = new Vector3(i*2, 0, 0);
        renderer.material.color = Random.ColorHSV();
    }
}

 


02 hue 값 지정하기

void Start()
{
    Color randomColor = Random.ColorHSV(0.3f,0.6f);
    for(int i = 0; i<3 ; i++)
    {
        GameObject child = Instantiate(cube);
        Renderer renderer = child.GetComponent<Renderer>();
        child.transform.position = new Vector3(i*2, 0, 0);
        renderer.material.color = Random.ColorHSV();
    }
}


03 saturation 값 지정하기

void Start()
{
    Color randomColor = Random.ColorHSV(0.3f,0.6f,0.7f,0.9f);
    for(int i = 0; i<3 ; i++)
    {
        GameObject child = Instantiate(cube);
        Renderer renderer = child.GetComponent<Renderer>();
        child.transform.position = new Vector3(i*2, 0, 0);
        renderer.material.color = Random.ColorHSV();
    }
}


04 value 값 지정하기

void Start()
{
    Color randomColor = Random.ColorHSV(0.3f,0.6f,0.7f,0.9f,0.9f,1.0f);
    for(int i = 0; i<3 ; i++)
    {
        GameObject child = Instantiate(cube);
        Renderer renderer = child.GetComponent<Renderer>();
        child.transform.position = new Vector3(i*2, 0, 0);
        renderer.material.color = Random.ColorHSV();
    }
}


2. RGBA

RGBA는 Red, Green, Blue, Alpha(투명도)로 이루어져 있다. 각 요소들은 0부터 1까지의 값을 가지며 0에 가까울수록 해당 색이 연해지고 1에가까월 수록 해당 색깔이 진하다.

Color(float R, float G, float B);
Color(float R, float G, float B, float A);

출처 :&nbsp;https://ko.wikipedia.org/wiki/RGBA_%EC%83%89_%EA%B3%B5%EA%B0%84


Code 예시

01 Alpha가 없는 경우

Random.value는 무작위로 0부터 1까지의 값을 생성한다.

void Start()
{
    Color randomColor = new Color(Random.value, Random.value, Random.value);
    for(int i = 0; i<3 ; i++)
    {
        GameObject child = Instantiate(cube);
        Renderer renderer = child.GetComponent<Renderer>();
        child.transform.position = new Vector3(i*2, 0, 0);
        renderer.material.color = Random.ColorHSV();
    }
}

 


02 Alpha가 있는 경우

void Start()
{
    Color randomColor = new Color(Random.value, Random.value, Random.value, Random.value);
    for(int i = 0; i<3 ; i++)
    {
        GameObject child = Instantiate(cube);
        Renderer renderer = child.GetComponent<Renderer>();
        child.transform.position = new Vector3(i*2, 0, 0);
        renderer.material.color = Random.ColorHSV();
    }
}

반응형

댓글