2023.12.04 오늘의 기록 팀과제 진행

2023. 12. 4. 19:19카테고리 없음

1. 오늘 팀과제의 목표는 개인마다 주어진 역할 수행을 한 뒤 각자의 수행물을 하나의 MainScene에 합치는 것이다.

 

내가 맡게 된 역할은 게임 로직 부분으로 게임시작, 점수, 시간, 종료패널이 나오도록 하는 것이다.

 

캔버스를 만들어 UI 이미지와 텍스트를 추가해주고, 점수, 시간에 해당하는 텍스트를 적어준 뒤 gameManager 스크립트 작성을 했다.

 

 float spendtime;
 int totalScore = 0;
 public Text scoreText;
 public Text timeText;
 public GameObject panel;

 

 void Update() 시간이 흐르도록 만들어주고, 60초가 지났을 때 종료 패널이 나옴과 동시에 게임이 종료되도록 하였다.
 {
     spendtime += Time.deltaTime;
     if (spendtime > 60)
     {
         Time.timeScale = 0.0f;
         panel.SetActive(true);
         spendtime = 0.0f;
     }
     timeText.text = spendtime.ToString("N1");  소수점 첫째자리까지만 시간이 나오도록 만들었다.
 }
 public void addScore(int score)  점수는 총 점수에 점수를 추가하며, 총점수에 Tostring을 주어 숫자를 문자열로 표시했다.
 {
     totalScore += score;
     scoreText.text = totalScore.ToString();
 }
 public void retry() 게임종료 버튼을 클릭 시 메인씬이 다시 동작하도록 함수를 추가했다.
 {
     SceneManager.LoadScene("MainScene");
 }
 void initGame() 시간과 점수를 초기화 하고, Time.timeScale 값을 1로주어 게임내 시간도 초기화했다.
 {
     Time.timeScale = 1.0f;
     totalScore = 0;
     spendtime = 0.0f;
 }

 

점수를 구현하기 위해선 게임오브젝트 떨어지는 물체에 직접 점수를 추가해줘야 하는데,

int type;
float size;
int score;

 

자료형과 변수를 선언 후

 type = Random.Range(1, 3); //type을 만들어서 다양한 과일들 추가

 if (type == 1)
 {
     size = 0.5f;
     score = 1;
 }
 if (type == 2)
 {
     size = 1f;
     score = 2;
 }


 transform.localScale = new Vector3(size, size, 0); //사이즈 변경 시 사용

type 을 활용해 다양한 오브젝트도 추가가 가능하다.

 

 //Collision을 가진 오브젝트가 다른 Collision 값을 가진 함수와 부딪혔을 때 무조건 실행
 private void OnCollisionEnter2D(Collision2D coll)
 {
     //Ground에 부딪히면 사라진다.
     if (coll.gameObject.tag == "Ground")
     {
         gameManager.I.addScore(score); 게임매니저 호출, Ground 태그에 오브젝트가 충돌이 일어났을 때 점수를 추가
         Destroy(gameObject);
     }

     //Player와 부딪히면 게임 종료.
     if (coll.gameObject.tag == "Player")
     {
         gameManager.I.gameOver();
     }
 }

 

유니티에서 충돌을 해결하기 위해 세운 방안으로

 

팀원 각각의 Scene을 만들어 그 씬에서 만든 기능들을 MainScene으로 하나씩 옮기는 것이다.

콘솔에서는 코드 병합을 통해 수정이 가능했지만 유니티의 경우 한명의 브랜치로 합쳐버리거나, 유니티 상에서 직접 충돌 부분을 해결해야 되서 더욱 복잡했다.

 

어렵게만 느껴졌던 깃 사용법이 특강도 듣고, 직접 충돌도 해결해보니 굉장히 사용하기 편리한 툴이라고 느껴졌다. 남은 기간동안 팀과제의 완성도를 높이기 위해 더욱 공부를 해야겠다.

 

집중 코딩시간에 사운드 추가 및 Slide 바를 사용하여 볼륨조절을 하고자 했지만, 전혀 기능이 동작되지 않았다. Audio Mixer 부분에 대한 공부가 필요할 것 같다.