C#,Unity Programming
게임개발 학습. 고양이 밥주기 게임(레벨 구성하기if, Type)
이로이카
2022. 9. 5. 14:35
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);
}
}