김김김의 게임개발
  • Unity 게임 개발 #2 - 피하기 게임<rainRtan> 2
    2023년 07월 27일 20시 48분 05초에 업로드 된 글입니다.
    작성자: noun06

    유니티를 사용하여 개발한 비 피하기 모바일 게임입니다.


    1. 다시하기 UI 세팅

    • UI 판넬 생성 후 색상, 위치 설정, 비활성화 처리.

     

    2. 타이머

    • limit 변수 선언 후 deltaTime값 계속 줄어들게 하기, 0 미만일 시 시간 정지.
    • 시간 UI 오브젝트가 timeLimit값과 동일하게 하기(N2로 소숫점 둘째 자리까지 표시).
    //gameManager.cs
    
    public Text timeText; //time 텍스트 오브젝트
    
    void Update()
    {
    	limit -= Time.deltaTime; //시간 감소
    	if (limit < 0)
    	{
    		Time.timeScale = 0.0f;
    		limit = 0.0f;
    	}
    	timeText.text = timeLimit.ToString("N2");
    }

     

    3. 다시하기 UI 나오게 하기

    • limit 값이 0 미만일 시 SetActive()함수를 통해 panel 오브젝트 활성화.

    • SetActive(true) : 활성화
    • SetActive(false) : 비활성화

    //gameManager.cs
    
    public GameObject panel; // 패널 UI 오브젝트
    
    void Update()
    {
    	//..
    	if (limit < 0)
    	{
    		Time.timeScale = 0.0f;
    		limit = 0.0f;
            	panel.SetActive(true); //패널 활성화
    	}
    	//..
    }

     

    4. 게임 재시작

    • panel오브젝트에 버튼 컴포넌트 추가.
    • gameManager에 씬 불러오는 기능을 가진 retry()함수를 생성.
    //gameManger.cs
    
    using UnityEngine.SceneManagement;
    
    public void retry()
    {
        SceneManager.LoadScene("MainScene");
    }

     

    • panel.cs에 retry()함수 불러온 후 panel에 버튼에 OnClick 넣기.
     //panel.cs
     
     public void retry()
    {
        gameManager.I.retry();
    }

     

    • 현재 시간, 총 점수, 제한 시간을 초기화하는 함수 initGame() 생성 후 게임 시작 시 호출
    //gameManager.cs
    
    void Start()
    {
        initGame();
    }
    
    void initGame()
    {
        Time.timeScale = 1.0f;
        totalScore = 0;
        limit = 30.0f;   
    }

     

    5. 맞으면 점수 하락하는 빨간 비 생성

    • 새로운 비 타입 4 생성, type Random.Range의 범위를 늘려주기.
    //rain.cs
    
    void Start()
    {
        //..
        type  = Random.Range(1, 5);
    
        if (type == 1)
        {//..}
        else if (type == 2)
        {//..}
        else if(type == 3)
        {//..}
        else
        {
            size = 0.8f;
            score = -5; //점수 5점 하락
            GetComponent<SpriteRenderer>().color = new Color(255 / 255.0f, 100.0f / 255.0f, 100.0f / 255.0f, 255.0f / 255.0f);
        }
        transform.localScale = new Vector3(size, size, 0);
    }

     

    6. 결과물

     

     

    댓글