-
내일배움캠프 22일차 TIL - 유니티 입문 팀 프로젝트TIL/Unity 2024. 5. 16. 21:08
[학습목표]
유니티 입문 주차 팀 프로젝트를 시작한다.
[학습내용]
수준별 꾸준 과제
오늘 진행한 부분은 로켓의 움직임을 더 정교하게 만드는 작업이다.
먼저 OnMove와 OnBoost에 직접 구현되어있는 이동 로직을, 입력 기능과 이동 기능으로 쪼개고 이동 기능을 RocketMovement 쪽으로 옮겨주었다.
그리고 추가적으로 이동 기능을 Move()와 Rotate()로 나누어, 직선적인 움직임과 회전을 따로 구현해 주었다. 기존의 로켓은 WASD 키를 이용하여 상하좌우를 직접 이동하였지만, 새로운 방식은 실제 로켓처럼 전진만 한다. 좌우는 로켓을 회전시켜서 호를 그리듯 움직인다.
이 회전 부분을 구현하다가 진행이 막혔는데, 원리가 어렵다기보다 메서드를 사용하는 방법이 어려웠다.
private void Rotate(Vector2 direction) { // TODO : 완만한 회전을 적용함 float rotZ = Mathf.Atan2(direction.y, direction.x) * Mathf.Rad2Deg; Quaternion to = Quaternion.Slerp(transform.rotation, new Quaternion(0, 0, rotZ, 0), ROTATIONSPEED); transform.Rotate(0, 0, to.z); }
RocketMovement.cs (미해결)
회전을 천천히 시켜주기 위해서 Quaternion.Slerp() 메서드를 사용할 것을 권장받았다. 그런데 이 메서드가 매개변수로 쿼터니언을 받는 것이다. 나는 삼각함수로 회전해야할 각도까지는 구했다. 그런데 이게 float 형으로 반환되어 나오기 때문에, 이걸 쿼터니언으로 바꿔주는 작업이 필요해보였다. 그런데 이렇게도 해보고 저렇게도 해봤는데 잘 안 됐다.
이거 외의 다른 부분은 원리 상으로는 어렵지 않은 부분이라 변환만 성공하면 넘어갈 수 있는 부분이다.
객체지향 특강
오늘은 2시간 가량 튜터님의 객체지향 프로그래밍 특강이 있었다. 오늘은 이론을 위주로 다루고, 다음주 목요일에는 실습을 위주로 진행한다고 하셨다.
우선 코드에는 결합도와 응집도가 있다고 한다.
- 결합도는 한 클래스가 다른 클래스 간에 얼마나 영향을 끼치는지에 대한 척도로, 낮을수록 좋은 코드라고 한다.
- 응집도는 어떠한 기능이 한 클래스에 얼마나 잘 뭉쳐있는가를 나타내고, 높을수록 좋은 코드라고 한다.
결합도(또는 의존도)가 낮고 응집도가 높은 코드를 작성하는 것이 좋고, 이를 통해 객체지향의 특성인 캡슐화가 이뤄진다고 한다.
유니티 입문 팀 프로젝트
오늘부터 새로운 팀 프로젝트가 시작한다. 주제는 3개 중에 하나를 고르는 식이었다.
- 똥피하기
- 닷지
- 벽돌깨기
우리 팀은 회의를 거쳐 똥피하기 게임을 만들기로 했다. 다만 똥을 피하는 게 아닌, 모 R사 게임의 티모라는 캐릭터를 모티브로 하여 버섯을 피하는 게임을 만드는 것으로 정했다.
우선 설계부터 진행했다. 지난 팀 프로젝트들에서 설계부분이 되게 미흡했다고 생각이 들어서 설계를 확실하게 하고 가고싶었다. 일단 와이어 프레임을 제작해보았다.
씬은 총 3개로 구성이 되고, 일시정지하거나 게임룰을 보고 싶을 때 띄우는 UI도 제작할 계획이다.
씬 종류
- 시작 화면 (메뉴)
- 플레이 화면
- 게임종료 화면
우선적으로 버섯 피하기 게임 로직은 전부 구현이 된다. 캐릭터를 만들고, 떨어질 버섯을 만들고, 충돌하면 게임이 끝나는 로직이다.
필수 구현 사항
- 게임 화면 구성
- 캐릭터 만들기
- 버섯 오브젝트 만들기
- 충돌 감지
- 게임 로직
그리고 이 외에도 여유가 된다면 추가적으로 구현할 사항은 다음과 같다
추가 구현 사항
- HP 시스템
- 점수 시스템
- 게임 일시정지 기능 + UI
- 사운드 (BGM + 효과음)
- 난이도 시스템 (점수 기반)
- 아이템
- 캐릭터 변경
이를 기반으로 클래스 다이어그램도 작성해보았다.
아직 설계를 진행 중이어서 완성된 클래스 다이어그램은 아니다. 오늘 발제와 특강도 있었고, 아이디어 회의가 길어졌기 때문에 완성까지는 진행하지 못했다. 내일 이어서 진행할 계획이다.
[회고]
오늘은 게임 기획과 설계에 많은 시간을 투자한 거 같다. 이렇게 처음에 탄탄하게 기반을 다져놔야 나중이 편하다는 걸 저번 프로젝트 때 느꼈다. 그래서 별로 시간이 아깝다는 생각은 들지 않았다. 내일부터 진짜 시작인데, 마음을 단단하게 먹어야 할 거 같다.
'TIL > Unity' 카테고리의 다른 글
내일배움캠프 24일차 TIL - 유니티 입문 팀 프로젝트 3 (0) 2024.05.20 내일배움캠프 23일차 TIL - 유니티 입문 팀 프로젝트 2 (0) 2024.05.17 내일배움캠프 21일차 TIL - 스파르타타운 제작 마무리 (0) 2024.05.14 내일배움캠프 20일차 TIL - 스파르타타운 게임 제작 (0) 2024.05.13 내일배움캠프 19일차 TIL - 2D게임 기초 개발 입문 2 (0) 2024.05.10