고양이에게 밥을 줘서 생선가게를 지키는 게임 !
using UnityEngine.SceneManagement;
public void GameStart()
{
SceneManager.LoadScene("MainScene"); // MainScene을 로드한다.
}
void Update()
{ // y 방향으로 0.5씩 상승
transform.position += new Vector3(0.0f, 0.5f, 0.0f);
}
public GameObject food;
public GameObject dog;
void Start()
{ // makefood 함수를 0.2초 마다 실행
InvokeRepeating("makeFood", 0.0f, 0.2f);
}
void makeFood()
{
float x = dog.transform.position.x; // x의 위치는 dog와 같게
float y = dog.transform.position.y + 2.0f; // y의 위치는 dog 위로 2 높은 곳에서
Instantiate(food, new Vector3(x,y,0), Quaternion.identity);
} // 반복하여 생성한다. // 3D에서 회전값을 정의, 지금은 2D이니 없음
void Update()
{
transform.position += new Vector3(0.0f, 0.05f, 0.0f); // food의 y 이동값을 느리게 조정
if (transform.position.y > 26.0f) // food의 y값이 26을 넘어가면 삭제한다.
{
Destroy(gameObject);
}
}
// 마우스의 움직임에 따라 dog 오브젝트를 움직이게 하기
void Update()
{
Vector3 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
// 마우스의 움직임 값을 가져온다.
float x = mousePos.x;
if (x > 8.5f) // dog의 x값을 fishshop 안쪽으로 제한한다.
{
x = 8.5f;
}
if (x < -8.5f)
{
x = -8.5f;
}
transform.position = new Vector3(x, transform.position.y, 0);
// y값은 dog의 y값 그대로 사용한다.
}
void Start()
{
float x = Random.Range(-8.5f, 8.5f); // -8.5~8.5 사이의 랜덤한 값
float y = 30.0f; // y값는 30 고정
transform.position = new Vector3(x, y, 0);
}
// Update is called once per frame
void Update()
{
transform.position += new Vector3(0.0f, -0.05f, 0.0f); // y-0.05로 계속해서 내려간다.
}
void OnTriggerEnter2D(Collider2D coll)
{
if (coll.gameObject.tag == "food") // tag가 food인 오브젝트와 충돌 시 아래 함수 실행
{
Debug.Log("맞았다!");
}
}
float full = 5.0f;
float energy = 0.0f;
void OnTriggerEnter2D(Collider2D coll)
{
if (coll.gameObject.tag == "food")
{
energy += 1.0f;
Destroy(coll.gameObject);
}
}
void OnTriggerEnter2D(Collider2D coll)
{
if (coll.gameObject.tag == "food")
{
if (energy < full)
{
energy += 1.0f;
Destroy(coll.gameObject);
}
else
{
Debug.Log("배가 다 찼어요");
}
}
}
void OnTriggerEnter2D(Collider2D coll)
{
if (coll.gameObject.tag == "food")
{
if (energy < full)
{
energy += 1.0f;
Destroy(coll.gameObject);
gameObject.transform.Find("hungry/Canvas/front").transform.localScale = new Vector3(energy / full, 1.0f, 1.0f);
}
else
{
Debug.Log("배가 다 찼어요");
}
}
}
void OnTriggerEnter2D(Collider2D coll)
{
if (coll.gameObject.tag == "food")
{
if (energy < full)
{
energy += 1.0f;
Destroy(coll.gameObject);
gameObject.transform.Find("hungry/Canvas/front").transform.localScale = new Vector3(energy / full, 1.0f, 1.0f);
}
else
{
gameObject.transform.Find("hungry").gameObject.SetActive(false);
gameObject.transform.Find("full").gameObject.SetActive(true);
}
}
}
void Update()
{
if (energy < full)
{
transform.position += new Vector3(0.0f, -0.05f, 0.0f);
}
else
{
if (transform.position.x > 0) // 생성된 x값이 0보다 크면 오른쪽으로 사라진다.
{
transform.position += new Vector3(0.05f, 0.0f, 0.0f);
}
else // 생성된 x값이 0보다 작으면 왼쪽으로 사라진다.
{
transform.position += new Vector3(-0.05f, 0.0f, 0.0f);
}
Destroy(gameObject, 3.0f); // 3초 뒤 오브젝트 삭제
}
}
public GameObject normalCat;
void Start()
{
InvokeRepeating("makeFood", 0.0f, 0.2f);
InvokeRepeating("makeCat", 0.0f, 1.0f); // 1초에 한 번 makeCat 함수 불러오기
}
void makeCat()
{
Instantiate(normalCat);
}
using UnityEngine.SceneManagement;
public void ReGame()
{
SceneManager.LoadScene("MainScene"); // MainScene를 불러온다.
}
public static gameManager I;
void Awake()
{
I = this;
}
public GameObject retryBtn;
public void gameOver()
{
retryBtn.SetActive(true); // retryBtn을 활성화 시킨다.
Time.timeScale = 0.0f; // 시간 초기화
}
void Update()
{
if (energy < full)
{
transform.position += new Vector3(0.0f, -0.05f, 0.0f);
if (transform.position.y < -16.0f) // cat 오브젝트가 y값 -16 보다 작아지면 gameOver() 함수를 gameManager에서 불러온다.
{
gameManager.I.gameOver();
}
}
else
{
if (transform.position.x > 0)
{
transform.position += new Vector3(0.05f, 0.0f, 0.0f);
}
else
{
transform.position += new Vector3(-0.05f, 0.0f, 0.0f);
}
Destroy(gameObject, 3.0f);
}
}
유니티 엔진은 게임 만들기에 최적화가 되어있음을 감탄하며 강의를 들었다. UI가 굉장히 직관적이고 C#에 사용되는 기본 기능 코드들도 어렵지 않게 느껴졌다. 얼른 많은 기능들을 배우고 복습하며 익숙해지고 싶다는 생각이 든다..!