개발일지/스파르타 코딩클럽 유니티 강의
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주차가 마무리 되었다.