
게임 클라이언트 개발자는 기획서에 적힌 규칙을 실제로 동작하는 시스템으로 바꾸는 사람입니다. 유니티 수업에서는 캐릭터 조작, 충돌과 물리, UI 연결, 저장과…
기초 과제: 이동, 입력, 물리 충돌
첫 과제는 상자 하나를 키보드로 움직이는 것입니다. 트랜스폼의 위치를 직접 바꾸는 방법과, 리지드바디(Rigidbody)에 힘이나 속도를 주는 방법을 각각 만들어 보고 차이를 비교하세요. 벽에 부딪혔을 때 두 방식이 어떻게 다르게 반응하는지 직접 보는 것이 이 과제의 핵심입니다. 입력은 유니티의 입력 시스템으로 이동, 점프 같은 동작을 정의해 보는 것까지 해 봅니다.
두 번째 과제는 충돌과 트리거입니다. 코인을 먹으면 사라지고 점수가 오르는 장면을 만들어 봅니다. 콜라이더를 트리거로 설정했을 때와 아닐 때 어떤 함수가 불리는지, 둘 중 하나에 리지드바디가 없으면 어떻게 되는지 직접 바꿔 가며 확인하세요. 입문자가 가장 많이 막히는 지점이 충돌 이벤트가 불리지 않는 문제인데, 이 과제에서 원인을 하나씩 경험해 두면 나중에 시간을 크게 아낄 수 있습니다.
구조 과제: 프리팹, 생성과 삭제, 씬 전환
세 번째 과제는 프리팹(재사용할 수 있게 저장한 오브젝트 묶음)으로 적을 만들고, 일정 시간마다 화면 밖에서 생성되어 플레이어 쪽으로 다가오게 하는 것입니다. 생성한 적이 화면 밖으로 나가거나 죽으면 삭제하는 처리도 함께 넣습니다. 이때 하이어라키 창에 오브젝트가 계속 쌓이지 않는지 확인하세요. 나중에는 만들고 지우는 대신 미리 만들어 두고 재사용하는 방식으로 바꿔 보면 성능 차이를 배울 수 있습니다.
네 번째 과제는 씬 전환입니다. 시작 화면, 게임 화면, 결과 화면 세 개의 씬을 만들고 버튼과 게임 오버 조건으로 오가게 합니다. 씬을 옮길 때 점수 같은 값을 어떻게 넘길지 고민해 보는 것이 중요합니다. 정적 변수, 사라지지 않는 관리 오브젝트 등 여러 방법이 있는데, 각각 써 보고 장단점을 메모해 두세요.
화면 과제: UI와 애니메이터
다섯 번째 과제는 UI입니다. 캔버스 위에 체력 바, 점수 텍스트, 일시 정지 버튼을 만들고 게임 상태와 연결합니다. 해상도를 바꿔도 UI가 화면 밖으로 밀려나지 않도록 앵커와 캔버스 크기 조절 설정을 바꿔 보는 것도 과제에 포함합니다. 모바일 비율과 PC 비율을 번갈아 확인하면 이 설정이 왜 중요한지 금방 알게 됩니다.
여섯 번째 과제는 애니메이터입니다. 대기, 걷기, 점프 상태를 가진 캐릭터를 만들고, 속도와 땅에 닿았는지 여부를 파라미터로 넘겨 상태가 바뀌게 합니다. 연습용 캐릭터와 애니메이션은 에셋 스토어의 무료 자료를 써도 됩니다. 상태가 늦게 바뀌어 동작이 굼뜨게 느껴진다면 전환 조건과 전환 시간 설정을 살펴보세요. 이 문제를 직접 고쳐 보는 경험이 조작감을 다루는 첫걸음입니다.
중급 과제: 코루틴, 스크립터블 오브젝트, 내비메시
- 코루틴: 피격 시 캐릭터가 몇 번 깜빡이며 잠시 무적이 되는 효과 만들기
- 스크립터블 오브젝트: 무기 세 종류의 이름, 공격력, 아이콘을 데이터 에셋으로 만들고 교체하기
- 내비메시: 장애물이 있는 맵에서 적이 플레이어를 길 찾기로 쫓아오게 하기
- 이벤트: 플레이어 체력이 바뀌면 UI, 사운드, 카메라 흔들림이 각각 반응하게 연결하기
이 단계의 과제들은 기능 자체보다 코드 구조를 배우는 데 의미가 있습니다. 스크립터블 오브젝트로 무기 데이터를 분리하면, 스크립트를 고치지 않고 데이터만 바꿔 새 무기를 만들 수 있다는 것을 체감하게 됩니다. 이벤트 과제는 체력 스크립트가 UI나 사운드를 직접 알지 않아도 되도록 연결하는 연습으로, 프로젝트가 커질수록 이런 분리가 버그를 줄여 줍니다.
내비메시 과제에서는 맵을 바꿨을 때 다시 굽는 과정을 잊지 않도록 합니다. 길 찾기가 이상할 때 대부분은 맵이 바뀐 뒤 갱신하지 않은 경우입니다.
마무리 과제: 저장과 빌드
아홉 번째 과제는 저장과 불러오기입니다. 간단한 설정 값은 플레이어프리프스(PlayerPrefs)로, 진행 상황처럼 구조가 있는 데이터는 JSON 파일로 저장해 보세요. 두 방식이 어떤 데이터에 어울리는지 구분하는 것이 목표입니다. 게임을 껐다 켰을 때 이전 상태가 정확히 돌아오는지, 저장 파일이 없을 때 오류 없이 처음 상태로 시작하는지도 꼭 확인합니다.
마지막 과제는 지금까지 만든 장면 중 하나를 실행 파일로 빌드하는 것입니다. 에디터에서는 잘 되던 게임이 빌드하면 경로 문제나 해상도 문제로 다르게 동작하는 경우가 있습니다. 다른 사람의 컴퓨터에서 실행해 보고 피드백을 받는 것까지가 과제입니다. 빌드 과정에서 생긴 문제와 해결 방법을 기록해 두면 실무에서 큰 도움이 됩니다.
과제를 실력으로 바꾸는 기록 습관
과제마다 짧은 영상과 함께 사용한 기능, 막혔던 점, 해결 방법을 한 문단씩 적어 두세요. 같은 문제를 두 번 겪었을 때 찾아볼 수 있는 나만의 문서가 됩니다. 과제가 모두 끝나면 이 기능들을 엮어 작은 게임 하나를 완성해 보는 것이 자연스러운 다음 단계입니다. 이때 과제 코드를 그대로 붙이기보다, 과제에서 배운 구조를 바탕으로 새로 짜는 편이 깔끔합니다.
기능별 과제는 해냈는데 하나의 게임으로 엮으려니 구조가 엉킨다면, 설계 단계에서 도움을 받는 것이 효과적입니다. 지금까지 만든 과제를 바탕으로 포트폴리오용 게임 범위를 정하고 싶다면, SBS아카데미게임학원 유니티 과정 상담에서 진행 상황에 맞춘 다음 단계를 함께 정해 볼 수 있습니다.
자주 묻는 질문
C#을 먼저 공부하고 유니티를 시작해야 하나요?
변수, 조건문, 반복문, 함수, 클래스 정도의 기초를 알고 시작하면 훨씬 수월합니다. 다만 유니티 과제를 하면서 C#을 함께 익히는 방식도 많이 씁니다.
2D와 3D 중 어느 쪽으로 과제를 하는 게 좋나요?
기능의 원리는 대부분 같으므로 관심 있는 쪽으로 시작하면 됩니다. 물리와 카메라 설정은 2D와 3D가 조금 다르니 한쪽이 익숙해진 뒤 다른 쪽도 한 번 해 보세요.
가까운 캠퍼스에서 유니티 알아보기
사는 곳과 가까운 캠퍼스를 고르면 수업 내용, 오시는 길, 상담 신청을 한 번에 볼 수 있습니다.