새소식

C#,Unity Programming

게임개발 학습. 고양이 밥주기 게임(밥주기 코드 수정)

  • -
728x90

 

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

오류 상황

  • 강의에서 배운 고양이가 체력이 꽉 차면 full 로 변경하는 코드는 아래와 같다.
    • 문제는 아래 코드는 고양이 체력이 5일때 6대를 맞아야 full 이미지로 변경이 된다는 것
    • 이 함수는 충돌시 함수이기 때문에, 그 다음 충돌이 일어나기 전까지는 else가 실행되지 않음
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);
        }
    }
}
  • 그런데 체력이 5가 되어서 사라지는 이펙트는 Update에서 처리하므로 배부른 표정 없이, 체력이 5되자마자 고양이가 집에간다

해결 방법

  • 이미지를 Full 로 변경하는 명령을 Update로 보낸다
    void Update()
    {
        if (energy < full)
        {
            transform.position += new Vector3(0f, -0.05f, 0f);

            if (transform.position.y < -22f)
            {
                gameManager.GM.gameOver();
            }
        }

        else
        {
            gameObject.transform.Find("hungry").gameObject.SetActive(false);
            gameObject.transform.Find("full").gameObject.SetActive(true);

            if ( transform.position.x > 0)
            {
                transform.position += new Vector3(0.05f, 0f, 0f);
            }
            else
            {
                transform.position += new Vector3(-0.05f, 0f, 0f);
            }
            Destroy(gameObject, 3f);
        }


    }
  • 이제 고양이가 체력이 5되자마자 배부른 표정을 짓고 집에간다

 

Contents
  • -

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

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