커뮤니티
포인트
쿠폰
내 강의실
국비 신청 내역
증명서
계정
로그아웃
학습 질문
개발 일지
나의 활동
답변 완료
3-5 게임오버 관련
undefined주차
북마크
한*상
댓글
3
추천
0
조회수
20
조회수
20
답변 완료

* 겪고 있는 문제 상황을 최대한 자세하게 작성해주세요.

* 문제 해결을 위해 어떤 시도를 해보았는지 구체적으로 함께 알려주세요.



3-5강의에 적어주신 코드로 넣어봤는데 고양이가 가게에 닿으면 리트라이 버튼이 나오지 않고 오류가 발생합니다.


찾아보니까 오브젝트를 찾을 수 없다는 데 자세히 나오지 않아서 질문 드립니다.







작성한 코드 및 에러 메세지

->게임메니저 코드 입니다

using System.Collections;

using System.Collections.Generic;

using UnityEngine;


public class gameManager : MonoBehaviour

{

  public GameObject food;

  public GameObject dog;

  public GameObject normalCat;

  public GameObject retryBtn;


  public static gameManager I;

  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);

}




public void gameOver()

{

  retryBtn.SetActive(true);

  Time.timeScale = 0.0f;

}


}



--------------------------------------------------------------------------------------------------------

->cat 코드 입니다



using System.Collections;

using System.Collections.Generic;

using UnityEngine;


public class cat: MonoBehaviour

{

  // Start is called before the first frame update

  float full = 5.0f;

  float energy = 0.0f;  

  

  

  void Start()

  {

    float x = Random.Range(-8.5f, 8.5f);

    float y = 30.0f;

    transform.position = new Vector3(x, y, 0);

  }


  // Update is called once per frame

 void Update()

{

  if (energy < full)

  {

    transform.position += new Vector3(0.0f, -0.05f, 0.0f);


    if (transform.position.y < -16.0f)

    {

      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);

  }

}

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);

    }

  }

}




}


----------------------------------------------------------------------------------------------------------------------

->retryBtn 입니다


using System.Collections;

using System.Collections.Generic;

using UnityEngine;

using UnityEngine.SceneManagement;


public class retryBtn : MonoBehaviour

{

  // Start is called before the first frame update

  void Start()

  {

    

  }


  // Update is called once per frame

  void Update()

  {

    

  }


  public void ReGame()

  {

  SceneManager.LoadScene("MainScene");

  }

}




오류 발생 시, 작성한 코드 전체와 에러 메시지를 첨부해 주세요.

Tip 1) </> 아이콘을 눌러 코드박스를 만들어 보세요.

Tip 2) Ctrl+A(맥의 경우 Command+A) 단축키로 코드를 한 번에 선택할 수 있어요!



취소
 공유
취소
댓글 0
댓글 알림
나의얼굴