치치베베 2024. 4. 3. 15:27

오늘 배운 내용

  • 레벨 UI 만들기
  • 5마리 당 레벨 1씩 올리기
  • 레벨업 표기해주기
  • 더 많은 고양이 출현시키기
  • fatCat 출현시키기
  • 게임 즐겨보고 버그잡기
  • 해적 고양이 만들기

 

 

새롭게 알게 된 내용

 

5마리 당 레벨 1씩 올리기

int level = 0;
int cat = 0;

public void addCat()
{
    cat += 1;
    level = cat / 5;
}

기본적인 수학을 이용해서 구현했다

 

그냥 addCat만 넣으면 점수가 계속 올라가니까 조정해주기

bool isFull = false;

if (isFull == false)
{
    gameManager.I.addCat();
    gameObject.transform.Find("hungry").gameObject.SetActive(false);
    gameObject.transform.Find("full").gameObject.SetActive(true);

    isFull = true;
}

bool값을 이용해서 한번 배불러진 고양이는 더 이상 점수를 올리지 않는다

 

레벨 텍스트, 바 구현하기

using 

public Text levelText;
public GameObject levelFront;

public void addCat()
{
    cat += 1;
    level = cat / 5;

    levelText.text = level.ToString();
    levelFront.transform.localScale = new Vector3((cat - level * 5) / 5.0f, 1.0f, 1.0f);
}

레벨업이 될 수록 front 바가 0.2 > 0.4 이런 식으로 늘어나게끔 구현했다

 

***type 이용하기***

public int type;

// 업데이트 구문 안의 if문
if (energy < full)
{
    if (type == 0)
    {
        transform.position += new Vector3(0.0f, -0.05f, 0.0f);
    }
    else if (type == 1)
    {
        transform.position += new Vector3(0.0f, -0.03f, 0.0f);
    }

    if (transform.position.y < -16.0f)
    {
        gameManager.I.gameOver();
    }
}

고양이 마다의 스탯에 차이를 줄 때

타입을 이용하는 방법

따로 다른 스크립트를 사용하지 않고 cat.cs 하나로 모든 고양이를 관리할 수 있다.

 

***레벨마다 난이도 조정하기***

void makeCat()
{
    Instantiate(normalCat);

    if (level == 1)
    {
        float p = Random.Range(0, 10);
        if (p < 2) Instantiate(normalCat);
    }
    else if (level == 2)
    {
        float p = Random.Range(0, 10);
        if (p < 5) Instantiate(normalCat);
    }
    else if (level >= 3)
    {
        float p = Random.Range(0, 10);
        if (p < 5) Instantiate(normalCat);

        Instantiate(fatCat);
    }
}

레벨마다 start 함수 내에 있는 InvokeRepeating 함수로 인해서

1초마다 랜덤값을 만들어내 1 레벨에서는 랜덤값이 2보다 작을 경우 고양이 추가 생성,

2 레벨에서는 5보다 작을 경우 추가생성, 3레벨부터는 fatCat도 생성하도록 조정했다

 

오늘 발생한 문제

 

3레벨에서 계속 fatCat이 등장하지 않아서 살펴본 결과

난이도 조정 코드에서

level ==2 , level >= 3 이런 식으로 최종 난이도만 크거나 같을 때 발생하게 해야하는데

level >= 2 , level >= 3 으로 오타가 나 있어서 계속 2레벨의 난이도가 유지되었다.

 

중요하게 생각하는 부분

 

오늘 새롭게 배운 내용 모두가 아주 중요한 부분이다.

 

 

 

오늘로 3주차가 마무리 되었다.