새소식

C#,Unity Programming

게임개발 학습. 고양이 밥주기 게임(레벨 구성하기if, Type)

  • -
728x90

 

// 게임개발 종합반 - 3주차(스파르타코딩클럽)

레벨 UI 표시

  • 새 캔버스 생성 후 - level 캔버스를 자식으로 생성
  • 그 아래에 레벨 UI 배정

레벨에 따라 난이도를 올리기

5마리당 레벨 1씩 올리기

  • UI 변수 level, cat
  • 게임매니저에 addCat 함수 생성 후, cat.cs 배부를때 함수 호출
public void addCat()
{
    cat += 1;
    level = cat / 5;
}
  • 계속 addCat 함수가 실행되면 안되므로 isFull boolean 만들어서 함수 추가
if (isFull == false)
{
    gameObject.transform.Find("hungry").gameObject.SetActive(false);
    gameObject.transform.Find("full").gameObject.SetActive(true);
    isFull = true;
    gameManager.GM.addCat();
}

레벨업 표기해주기

  • 레벨이 올라갈때마다 levelFront의 게이지를 초기화하는 아이디어를 잘 알아두자
// UI 변수
int level = 0;
int cat = 0;
public Text levelText;
public GameObject levelFront;

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

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

}

레벨 반영하기

  • 방법1. makeCat에 조건문을 넣어서 level이 2이면 Instantiate(normalCat)을 두번 할 수 있음
  • 방법2. Random.Range를 함께 활용하면 조금 더 디테일한 레벨 구성이 가능
  • if 절이 한줄일때는 괄호안에 안넣어도 되나보다
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);
    }
}

고양이 종류에 따라 다른 값 주는 방법

  • 같은 cat.cs 스크립트를 공유하지만 고양이 타입에 따라 다른 수치가 적용될 수 있도록 구현
// 고양이 타입 변수
public int type;
  • 위처럼 변수 생성 후 Unity Inspector 상에서 Type 값을 넣어주면 그 값이 적용된 채 스크립트가 실행이 된다.

  • cat.cs에 type 을 구분하여 코드를 새로 짜주고
void Start()
{
    float x = Random.Range(-8.5f, 8.5f);
    float y = 30.0f;
    if (type == 0)
    {
        full = 5.0f;
    }

    if (type == 1)
    {
        full = 10.0f;
    }

    transform.position = new Vector3(x, y, 0f);
}

// Update is called once per frame
void Update()
{
    if (energy < full)
    {
        if (type == 0)
        {
            transform.position += new Vector3(0f, -0.05f, 0f);
        }

        else if( type == 1)
        {
            transform.position += new Vector3(0f, 0.03f, 0f);
        }
... 생략
    }
}
  • gameManager에서 fatCat을 등장시키는 코드를 새로 짜준다
public GameObject fatCat;

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);
    }
}
Contents
  • -

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.