이전편
랜덤한 x, y 위치값 설정
Rain.cs
    void Start()
    {
        // Range(최소값, 최대값)
        float x = Random.Range(-2.4f, 2.4f); // x의 값 (-2.4f ~ 2.4f) 사이
        float y = Random.Range(3.0f, 5.0f); // y의 값 (3.0f ~ 5.0f) 사이
        // 랜덤한 x, y값으로 위치 설정(빗방울 랜덤 생성)
        transform.position = new Vector3(x, y, 0);
    }Random.Range(최소값, 최대값); 을 통해 랜덤하게 값을 지정할 수 있습니다.
아래와 같이 랜덤 값을 설정했습니다.
가로 (-2.4f ~ 2.4f) 사이
세로 (3.0f ~ 5.0f) 사이
랜덤한 빗방울 타입 설정
    float size = 1.0f; // 빗방울 크기
    int score = 1; // 빗방울 점수값
    SpriteRenderer renderer; // 빗방울 색상변경을 위한 SpriteRenderer타입 변수
우선 위와 같이 빗방울의 크기, 점수값, 색상을 변경하기 위한 변수들을 선언했습니다.
Start() 부분의 전체적인 코드는 아래와 같습니다. 하나씩 살펴보겠습니다.
    void Start()
    {
        renderer = GetComponent<SpriteRenderer>(); // 빗방울 색상변경을 위한 SpriteRenderer 컴포넌트 정보 저장
        // Range(최소값, 최대값)
        float x = Random.Range(-2.4f, 2.4f); // x의 값 (-2.4f ~ 2.4f) 사이
        float y = Random.Range(3.0f, 5.0f); // y의 값 (3.0f ~ 5.0f) 사이
        // 랜덤한 x, y값으로 위치 설정(빗방울 랜덤 생성)
        transform.position = new Vector3(x, y, 0);
        // 빗방울 타입 랜덤 지정
        int type = Random.Range(1, 4); // 1, 2, 3 중에 랜덤 생성
        // 각각의 조건문들이 연관되어 있으니 else if로 적어주기
        // 빗방울 타입별 설정
        if(type == 1)
        {
            size = 0.8f;
            score = 1;
            renderer.color = new Color(100 / 255f, 100 / 255f, 1f, 1f);
        }
        else if(type == 2)
        {
            size = 1.0f;
            score = 2;
            renderer.color = new Color(130 / 255f, 130 / 255f, 1f, 1f);
        }
        else if(type == 3)
        {
            size = 1.2f;
            score = 3;
            renderer.color = new Color(150 / 255f, 150 / 255f, 1f, 1f);
        }
        
        // 랜덤 크기값으로 빗방울 크기 지정
        transform.localScale = new Vector3(size, size, 0);
    }- int 일 때
int type = Random.Range(1, 4); // 1, 2, 3 중에 랜덤 생성- float 일 때
float x = Random.Range(-2.4f, 2.4f);int 일 때 1~3까지 랜덤 생성하기 위해 최대값을 4로 설정한 것을 보고 조금 의아할 수도 있습니다.
Random.Range 함수는 두 번째 인자로 지정한 값 미만의 범위에서 랜덤한 값을 반환합니다.
그렇기 때문에 int 일 때 4미만은 3까지니까 최대값이 4로 설정된 것입니다.
그리고 float 일 때 2.4f미만으로 값이 나와야하니까 2.4f는 나오지 않겠죠?
2.4f까지 나오게 하고 싶다면 조금 더 높은 값이 2.5f 등으로 설정해주어야 합니다.
renderer.color = new Color(100 / 255f, 100 / 255f, 1f, 1f);Color 값은 float형으로 지정해줄 수 있습니다.
100의 값을 넣고 싶다면 100 / 255f 값으로 넣어주어야 합니다.
color 값을 설정할 때 255f로 나눠주는 이유
Unity의 Color 클래스에서 각 색상 값은 0부터 1 사이의 값으로 표현되기 때문입니다.
예를 들어, 빨간색을 표현할 때 (1, 0, 0, 1)과 같이 각각 빨간색, 초록색, 파란색, 알파값을 0부터 1 사이의 값으로 표현합니다.
이때, RGB 값은 각각 0부터 1 사이의 값으로 표현되어야 하기 때문에 0부터 255까지의 값을 0부터 1 사이의 값으로 변환해주기 위해 255f로 나눠주는 것입니다.
결과

다음편
2024.03.28 - [Unity/2D] - [Unity/2D] 빗방울 프리팹 반복 생성 - Instantiate(), InvokeRepeating()
모바일 화면 크기 설정이 궁금하다면?
'스파르타 게임개발종합반(Unity) > 사전캠프 공부 기록' 카테고리의 다른 글
| [Unity/2D] 점수 보드 만들기 - UI(User Interface) (0) | 2024.03.28 | 
|---|---|
| [Unity] 빗방울 프리팹 반복 생성 - Instantiate(), InvokeRepeating() (0) | 2024.03.28 | 
| [Unity/2D] 중력, 충돌을 이용하여 빗방울 구현하기 - Rigidbody, Collider, OnCollisionEnter, Destroy (0) | 2024.03.28 | 
| [Unity/2D] 마우스 왼쪽 버튼이 눌러졌을 때 캐릭터 방향 전환하기 - Mouse Input (0) | 2024.03.28 | 
| [Unity/2D] 캐릭터 방향 전환하기 - 플립(Flip) (0) | 2024.03.28 | 
 
			
			 
				
			
댓글