ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 12일차 레벨 구성하기
    개발일지/스파르타 코딩클럽 유니티 강의 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주차가 마무리 되었다.

Designed by Tistory.