선조미 2025. 4. 14. 11:30
Random.Range
랜덤의 원리에 대해 깨달았다!!
// lv.1 20% 확률로 고양이를 더 생성해준다.
if (level == 1)
{
    int p = Random.Range(0, 10);
    if (p < 2) Instantiate(normalCat);
}

 

Random.Range(0, 10)을 작성하면 0~9의 숫자가 랜덤으로 생성된다. 

여기서 2보다 작은 숫자 즉 0, 1 이 나올때만 조건이 발동하게 한다면 20%의 확률로 조건이 발동되게 할 수 있는 것이다. 
그냥 무작위로 실행되게 하는 것이 아니라 저렇게 특정 숫자가 나올 때로 조정할 수도 있다는게 당연한 것인데도 이론적으로 깨달으니 신기했다 ^w^

 

else if
else if는 단 하나의 블럭만 생성 된다. 
else if (level >= 4)
{
    Instantiate(pirateCat);
}​

 

요렇게 작성하면 오직 pirateCat만 생성된다. 위의 (level == 3)까지의 조건도 생성되려면 추가로 작성해줘야 한다는 것을 잊지말것,, 
void MakeCat()
{
    Instantiate(normalCat);

    // lv.1 20% 확률로 고양이를 더 생성해준다.
    if (level == 1)
    {
        int p = Random.Range(0, 10);
        if (p < 2) Instantiate(normalCat);
    }
    // lv.2 50% 확률로 고양이를 더 생성해준다.
    else if (level == 2)
    {
        int p = Random.Range(0, 10);
        if (p < 5) Instantiate(normalCat);
    }
    // lv.3 뚱뚱한 고양이를 생성해준다.
    else if (level == 3)
    {
        Instantiate (fatCat);
    }
    // lv.4 해적 고양이를 생성해준다.
    else if (level >= 4)
    {
        Instantiate(fatCat);
        Instantiate(pirateCat);
    }
}​
level >= 4는 어려워지는 단계이기 때문에 앞서 호출했던 고양이 종류들이 다 등장하면 좋을 것 같아서 추가로 선언해주었다. 

 

타이머
 void Update()
 {
     time += Time.deltaTime;
     timeTxt.text = time.ToString("N2");
     if(time > 30.0f)
     { EndTxt.SetActive(true);
       Time.timeScale = 0.0f;
     }
 }

30초가 지나면 타임아웃이 되게 하기 위해 if문을 사용했다. 
근데 30초 타임어택이라고 생각해 if (time < 30.0f)로 작성하고 있었다,, 어쩐지 안 되더라.. 
시간이 흘러가고 있다가 30초가 지나면 즉 30초보다 시간이 커지면 게임이 멈추게끔 하려면 당연히 time이 30.0f보다 커질 때로 가정해야 한다.