이전편
랜덤한 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로 나눠주는 것입니다.
결과
![](https://blog.kakaocdn.net/dn/BldrW/btsGaZTF23f/ItuqfmRXIH4KYChHlX65f0/img.gif)
다음편
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 |
댓글