사전캠프/Unity

빗물받는 르탄이 - 빨간 빗방울 만들기

서보훈 2024. 8. 20. 17:20

숙제 설명

받으면 오히려 5점 감점되는 빨간 빗방울을 만들어봅시다!

  • 내가 만든 빗방울의 메커닉을 살짝 수정해서 재미있는 게임을 만들 수 있어요!
  • 게임 내 에셋을 생성하고 배치하고, 수정하는 과정을 복습해보세요.

 

필수숙제

  1. 랜덤한 빗방울을 하나 추가합니다.
  2. 빗방울의 사이즈는 0.8, 색깔은 255, 100, 255로 설정해주세요.
  3. 맞으면 -5점 감점되도록 설정해주세요!
  4.  

기본 크기와 점수가 다른 파란색의 빗방울만을 생성하는 파트에 추가로 점수를 잃게 만드는 빨간색 빗방울을 생성해야합니다.

 

현재 빗방울을 생성하는 부분은 Rain.cs 의 Start 문 입니다.

private void Start()
{
    spriteRenderer = GetComponent<SpriteRenderer>();

    //X좌표 랜덤 생성
    float x = Random.Range(-2.7f, 2.7f);
    //Y좌표 랜덤 생성
    float y = Random.Range(3.0f, 5.0f);
    //이 오브젝트가 생성될때, 위치를 랜덤하게 만들어줌
    transform.position = new Vector3(x, y, 0);

    //빗방울 생성시, 랜덤한 크기로 생성하기 위한 변수
    int type = Random.Range(1, 4);

    if (type == 1)
    {
        size = 0.8f;
        score = 1;
        spriteRenderer.color = new Color(100 / 255f, 100 / 255f, 1);
    }

    if (type == 2)
    {
        size = 1f;
        score = 2;
        spriteRenderer.color = new Color(130 / 255f, 130 / 255f, 1);
    }

    if (type == 3)
    {
        size = 1.2f;
        score = 3;
        spriteRenderer.color = new Color(150 / 255f, 150 / 255f, 1);
    }
	
    //생성될 때, 타입에 따라서 크기를 변경함
    transform.localScale = new Vector3(size, size, 1);
}

 

무작위 정수를 발생시키는 type 변수의 Random.Range 의 범위를 수정하고, 새로운 정수값에 대한 if문을 하나 더 늘려주면 문제를 해결할 수 있습니다.

 

type 변수의 랜덤값을 1 ~ 5로 변경해줍니다.

private void Start()
{
	//...생략
    //빗방울 생성시, 랜덤한 크기로 생성하기 위한 변수
    int type = Random.Range(1, 5);

    //...
	//생성될 때, 타입에 따라서 크기를 변경함
    transform.localScale = new Vector3(size, size, 1);
}

이때, Random.Range의 범위에 주의하셔야 합니다.

Random.Range는 2개의 매개변수를 받는데, 왼쪽 매개변수 이상, 오른쪽 매개변수의 미만 값을 생성합니다.

// 1 ~ 5까지 무작위 정수 생성
int randomInt1 = Random.Range(1, 6);
// 0 ~ 4까지 무작위 정수 생성
int randomInt2 = Random.Range(0, 5);

 

또한 함수가 오버로딩 되어있기 때문에 한쪽 또는 양쪽 모두가 float 형 변수를 받을경우, float 값의 랜덤값을 반환합니다.

float 값을 반환할때 또한 왼쪽 매개변수 이상, 오른쪽 매개변수 미만의 값을 반환하게 됩니다.

//1 이상, 5.5 미만의 실수 반환
float randomFloat1 = Random.Range(1, 5.5f);
//0 이상, 4 미만의 실수 반환
float randomFloat2 = Random.Range(0f, 4f);

 

마지막으로 무작위값이 4가 나왔을때의 if문을 작성해줍니다.

다른 if문과 같이, size와 score, 색상을 정해줍니다.

빨간 빗방울은 받으면 점수를 잃기 때문에, score값을 -5로 지정해줍니다.

private void Start()
{
    //...
    //빗방울 생성시, 랜덤한 크기로 생성하기 위한 변수
    int type = Random.Range(1, 5);
    
    if (type == 1)
    {
        size = 0.8f;
        score = 1;
        spriteRenderer.color = new Color(100 / 255f, 100 / 255f, 1);
    }

    if (type == 2)
    {
        size = 1f;
        score = 2;
        spriteRenderer.color = new Color(130 / 255f, 130 / 255f, 1);
    }

    if (type == 3)
    {
        size = 1.2f;
        score = 3;
        spriteRenderer.color = new Color(150 / 255f, 150 / 255f, 1);
    }
    
    //빨간 빗방울
    if(type == 4)
    {
        size = 0.8f;
        score = -5;
        spriteRenderer.color = new Color(1f, 100 / 255f, 1f);
    }
	//생성될 때, 타입에 따라서 크기를 변경함
    transform.localScale = new Vector3(size, size, 1);
}

 

이것으로 빨간 빗방울의 생성이 완료되었습니다.