
* 겪고 있는 문제 상황을 최대한 자세하게 작성해주세요.
* 문제 해결을 위해 어떤 시도를 해보았는지 구체적으로 함께 알려주세요.
레벨이 3이 넘었음에도 뚱뚱한 고양이가 나타나지 않습니다.
코드가 문제인가 하고 열심히 찾아보았으나 문제점을 모르겠습니다.
오류 코드라 뜨는 것도 없을 뿐더러 게임매니저에게 제대로 쥐어져 있는 fatCat을 보니 확률적인가? 라고 생각하기엔 게임을 10번 넘게 돌려봐서 확률이 아닌 것 같아 여쭈어봅니다..



작성한 코드 및 에러 메세지
오류 발생 시, 작성한 코드 전체와 에러 메시지를 첨부해 주세요.
Tip 1) </> 아이콘을 눌러 코드박스를 만들어 보세요.
게임매니저 스크립트
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class gameManager : MonoBehaviour
{
public GameObject dog;
public GameObject food;
public GameObject normalCat;
public GameObject fatCat;
public GameObject retryBtn;
public Text levelText;
public GameObject levelFront;
public static gameManager I;
int level = 0;
int cat = 0;
void Awake()
{
I = this;
}
// Start is called before the first frame update
void Start()
{
InvokeRepeating("makeFood", 0.0f, 0.2f);
InvokeRepeating("makeCat", 0.0f, 1.0f);
}
// Update is called once per frame
void Update()
{
}
void makeFood()
{
float x = dog.transform.position.x;
float y = dog.transform.position.y + 2.0f;
Instantiate(food, new Vector3(x, y, 0), Quaternion.identity);
}
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 < 6) Instantiate(normalCat);
Instantiate(fatCat);
}
}
public void gameOver()
{
retryBtn.SetActive(true);
Time.timeScale = 0.0f;
}
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);
}
}
캣 스크립트
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class cat : MonoBehaviour
{
float full = 5f;
float energy = 0.0f;
bool isFull = false;
public int type;
// Start is called before the first frame update
void Start()
{
float x = Random.Range(-8.5f, 8.5f);
float y = 30f;
if (type == 1)
{
full = 10.0f;
}
transform.position = new Vector3(x, y, 0);
}
// Update is called once per frame
void Update()
{
if (energy < full)
{
if (type == 0)
{
transform.position += new Vector3(0, -0.05f, 0);
}
else if (type == 1)
{
transform.position += new Vector3(0, -0.03f, 0);
}
if (transform.position.y < -16.0f)
{
//게임오버
gameManager.I.gameOver();
}
}
else
{
if (transform.position.x > 0)
{
transform.position += new Vector3(0.05f, 0, 0);
}
else
{
transform.position += new Vector3(-0.05f, 0, 0);
}
Destroy(gameObject, 3f);
}
}
void OnTriggerEnter2D(Collider2D coll)
{
if (coll.gameObject.tag == "food")
{
if (energy < full)
{
energy += 1f;
Destroy(coll.gameObject);
gameObject.transform.Find("hungry/Canvas/front").transform.localScale = new Vector3(energy / full, 1.0f, 1.0f);
}
else
{
if (isFull == false)
{
gameManager.I.addCat();
gameObject.transform.Find("hungry").gameObject.SetActive(false);
gameObject.transform.Find("full").gameObject.SetActive(true);
isFull = true;
}
}
}
}
}
