본문 바로가기

spartacodingclub/개발보고서

게임개발 종합반 1주차

https://spartacodingclub.kr/

 

*스파르타 클럽 강의[게임개발 종합반 7기] 1주차를 듣고 난 개인적인 후기*

더보기

스파르타의 초급반은 전부 비전공자들을 배려한 학습들이 포함돼있다

이번 게임 개발 수업 중에서도 C#에 대한 전체적인 언어 강의는 없지만 학습에 꼭 필요한 정도의 수업이 제공된다

그리고 개인적으로 게임 개발에 관심을 많이 가지고 있는 편이라 유니티를 활용한 실습이 들어가있는게 마음에 들었고, 1주차에는 그런 실습보다는 C# 수업이 위주여서 많이 아쉬웠다.

 

 

 

*유니티 허브 및 유니티 설치*

 

우선 유니티를 활용한 실습을 하기 위해 유니티 허브Unity Hub를 다운로드한다

https://unity3d.com/kr/get-unity/download

 

Download Unity!

Unity is the ultimate game development platform. Use Unity to build high-quality 3D and 2D games, deploy them across mobile, desktop, VR/AR, consoles or the Web, and connect with loyal and enthusiastic players and customers.

unity3d.com

 

위의 코드를 눌러 유니티 허브 다운로드를 누르면 exe 파일을 실행할 수 있는데

별다른 것 없이 [동의함]과 [설치]만 누르면 설치가 간단하게 진행된다

다음과 같은 화면이 윗부분에 뜬다면 성공한 것이다

(로그인과 프로젝트가 이미 존재하는 상황이라 막 다운로드 받았을 때와 모습이 다를 수도 있다)

우측 상단 로그인 창을 통해 회원가입을 진행한 후에는 

아래와 같이 하단에 '유효한 라이선스가 없습니다'라는 창이 뜨게 되는데,

'라이선스 관리'를 누르고 들어가서

 

위의 [새 라이선스 활성화]를 누르면

 

이런 화면이 뜨게 된다

여기에서 각자의 용도와 사용방식에 맞춰 설정해주면 되는데

나 같은 학생들이 실습으로 사용할 때는 위의 선택 사항만 고르고 완료를 누르면 된다

 

라이선스가 제대로 활성화되면 위와 같은 화면이 뜨는 것을 확인할 수 있다.

 

설정이 다 끝난 후 환경설정에서 나와 [설치]를 누르면 아직 설치된 버전이 없다고 뜬다

여기에서 [추가] 버튼을 클릭하면 아래와 같은 화면이 뜨게 된다

 

이번 강의 실습에서 사용하는 버전은 2020.3.0f1인데

위의 창을 확인해봐도 찾을 수 없을 때는 [Unity 다운로드 아카이브] 파란 글씨를 클릭해 홈페이지로 들어가

 

위와 같은 Unity Hub 버튼을 누르면 다시 이전 창으로 돌아가서 다음 단계가 진행된다

 

강의 실습을 따라 하려면 필수로 선택돼 있어야 하는 것들은 위의 있는 것들이고,

그 외의 언어 및 다른 것들은 개인의 용도에 맞춰 선택해주면 된다

그리고 [INSTALL] 버튼을 누르면 다운로드가 굉장히 오래걸리는데

중간에 비주얼 스튜디오 다운로드까지 포함돼 있어서 한참은 걸려야 설치가 끝나게 된다

 

설치가 완료되면 [프로젝트]로 들어와 [새로 생성]을 누른다

 

위와 같은 화면이 왼쪽에 뜨는 창이 나타날 텐데 실습에서는 2D게임을 만들 거기 떄문에 2D를 선택해 주고

오른쪽 화면에서 프로젝트 이름과 저장 위치를 지정해주면 된다

최초 생성 단계라 이때에도 시간이 많이 걸리게 되는데,

다운로드가 모두 끝나면 

 

이런 화면이 뜬다

여기에서 이번 실습 레이아웃을 설명하자면

 

[window] - [Layout] - [2 by 3] 선택 후

[Project] - [점 세 개] - [One Column Layout]을 눌러 주면 된다

그리고 [window] - [General] - [Console]을 누르면 콘솔 창이 뜨는데

[Console]이라고 적혀있는 부분을 잡고 화면에 이리저리 움직이면 삽입할 수 있다는 걸 알 수 있다

이때 [Project] 아랫부분에 밀어놓으면 콘솔 창까지 레이아웃에 정상적으로 추가할 수 있다.

 

설정이 끝나면 위와 같은 화면으로 정렬돼야 한다

(처음 실행했을 때와는 다른 화면일 것이다)

 

 

 

*강의 내용*

 

유니티에서 중요한 것은 [Hierarchy] [Project] [Inspector]이 세 가지이다

큰 흐름으로 설명하자면 게임에 들어가는 캐릭터나 배경 및 오브젝트 같은 것들은 [Project]를 통해 이용할 수 있고

[Hierarchy]로 그 오브젝트들을 드래그하면 왼쪽에 보이는 화면에 오브젝트들이 나타나게 된다

그리고 이 오브젝트들에게 효과를 주는 건 두 가지 방식이 있는데,

첫 번째는 [Hierarchy]에 있는 오브젝트를 눌러 [Inspector]에 뜨는 효과를 조정해주는 것이고

두 번째는 [Project]에 있는 오브젝트를 눌러 [Inspector]에 뜨는 효과를 조정해주는 것이다.

이때 첫 번째 방식으로 하면 해당 화면에 들어와 있는 해당 오브젝트만 효과를 가질 수 있기 때문에

기본적으로는 두 번째 방식으로 사용하는 것이 좋다

 

 

 

*실습*

 

이 포스트에서 사용된 오브젝트들은 강의 자료로 주어진 것이기 때문에 공유하지 않는다

기본적으로 사용할 수 있는 오브젝트가 있다는 전제하에 진행했던 실습을 설명하도록 하겠다

 

1. 캐릭터에게 중력 부여 및 바닥과 닿는 부분 설정하기

기본적으로 캐릭터와 바닥을 [Hierarchy]에 끌어놓은 뒤

끌어놓은 오브젝트를 눌러 [Inspector] 화면에서 위치를 조정해준다

포지션 값을 변경해야 위치를 바꿀 수 있고, 스칼라 값을 입력하면 오브젝트 자체의 크기가 조정된다

이때 X, Y, Z 표시 위에 마우스 왼쪽 클릭을 하고 드래그하면 값이 쉽게 변하는 것을 볼 수 있다

그 후 중력 부여와 같은 형식을 설정하기 위해서는

[Project]에서 효과를 부여하고 싶은 오브젝트를 선택해 [Inspector]에서 위의 사진에 나와 있는 버튼을 찾아야 한다

버튼을 누르면 검색할 수 있는 창이 뜨는데, 여기에서 [Box Colider 2D]와 [Rigidbody 2D]를 선택하면

[Inspector]에 뜨는 것을 볼 수 있다

그러고 나서 가운데 위에 있는 재생 버튼을 누르면 캐릭터가 떨어지다

바닥 오브젝트에 몸이 닿자 멈추는 것을 볼 수 있다

 

2. 캐릭터 움직이기

캐릭터를 움직이려면 C# 코딩을 해야하는데

이 강의에서는 문법을 따로 자세히 알려주지 않기 때문에

비전공자 같은 경우에는 코드를 그대로 복사 붙여넣기 하면서 감을 잡아보는 것이 좋다

우선 [Project]에서 캐릭터 오브젝트를 누른 뒤 [Inspector] 제일 아래에 있는 [Add Component] 버튼을 누른다

캐릭터를 움직이는 코드를 'Character Move' 파일에 저장한다고 했을 때

파일 저장명을 검색하는 곳에 입력하게 되면 위와 같이 [New script] 버튼을 누르면 자동으로 비주얼 스튜디오와 연동해

해당 파일명을 가진 기본적인 구조의 코드가 형성된다.

이 구조에서 중요한 부분은 Class 명 옆에 붙어 있는 ': MonoBehaviour'이다

이는 해당 클래스가 유니티 안에서 행동한다는 것을 표시해주는 것으로써

해당 부분이 없으면 유니티에서 오류가 뜨게 되니 조심하자

그리고 위와 같은 Using으로 처리된 것들은 해당 코드가 재생되기 위해서 사용하는 외부 파일이다

위의 것까지는 신경쓰지 않아도 된다

진짜 중요한 부분은 Start, Update로 표시된 것들인데, 이게 그 유명한 함수다

짧게 설명하자면 Start라는 함수에 {}로 묶인 코드들은

가운데 위에 있는 재생 버튼을 눌렀을 때 딱 한 번만 실행되는 코드를 의미한다

Update라는 함수에 {}로 묶인 코드들은

재생 버튼을 누른 뒤에 되게 짧은 간격으로 반복되는 코드를 의미한다

Debug.Log("업데이트 함수 실행");

Update라는 함수에 대해 잘 이해가 되지 않는다면 위의 코드를 Update 함수 안에 넣어 저장한 뒤

유니티에서 재생하고 콘솔 창을 확인하면 쉽게 이해할 수 있다

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CharacterMove : MonoBehaviour
{
    public Rigidbody2D rigid;
    public Transform trans;
    public float moveSpeed;

    void Update()
    {
        // 기본 방향은 0 입니다.
        // Vector2.zero 는 Vector2(0f, 0f) 와 같습니다
        Vector2 direction = Vector2.zero;

        if (Input.GetKey(KeyCode.LeftArrow))
        {
            // 왼쪽 키를 누른 경우엔 왼쪽 즉 Vector2.left 로 이동합니다
            // Vector2.left 는 Vector2(-1f, 0f) 와 같습니다
            direction = Vector2.left * moveSpeed;
        }
        else if (Input.GetKey(KeyCode.RightArrow))
        {
            direction = Vector2.right * moveSpeed;
        }
        rigid.velocity = direction;
    }
}

위에 있는 코드가 캐릭터가 좌우로 움직이는 코드인데

비전공자에게는 어려운 문법들이 있으니 간단하게만 설명하자면

if(여기 들어가는 문장이 참이면){
	이 안에 있는 문장을 실행해;
}
else if(여기 들어가는 문장이 참이면){
	이 안에 있는 문장을 실행해;
}
else {
	이 안에 있는 문장은 조건 없이 다 실행해;
}

위와 같다 즉,

왼쪽으로 가는 방향키를 누르면 캐릭터가 왼쪽으로 움직이는 스피드를 주고,

오른쪽으로 가는 방향키를 누르면 캐릭터가 오른쪽으로 움직이는 스피드를 주는 코드다

위의 코드를 완벽하게 이해하지 않아도 괜찮으니 일단 실행해보도록 하자

이 코드를 정상적으로 유니티에서 실행하고 싶으면 코드에서 정의한 변수들에게 값을 줘야한다

이 값은 [Inspector]로 돌아가보면 세 개의 변수가 비어 있는 걸 볼 수 있다

(위의 사진은 이미 값을 입력한 거니까 무시하면 된다)

위와 같이 값을 전부 입력하려면 [Project]에 있는 캐릭터 오브젝트를 끌어서 Rigid, Trans 부분에 놓으면 된다

그리고 스피드 값은 원하는대로 설정하고 가운데 위에 있는 재생 버튼을 누른 뒤 좌우 방향키를 눌러보면

캐릭터가 땅 오브젝트 위에서 움직이는 걸 볼 수 있다

 

3. 캐릭터를 중심으로 움직이는 메인 카메라

위의 코드를 실행해 보면 알겠지만 왼쪽 밑 부분이 메인 카메라에 잡히는,

실제 유저들에게 보여지는 화면인데, 캐릭터가 화면 밖을 나갈 때까지 움직일 수 있는 것을 확인할 수 있다

캐릭터를 따라 메인 카메라가 움직이게 하기 위해서는 [Hierarchy]에 있는 메인 카메라를 캐릭터 아래로 넣으면 된다

즉, 위와 같은 형태가 된 채로 다시 재생 버튼을 누르면

캐릭터가 좌우로 움직여도 배경 및 바닥만 움직이는 것처럼 보이게 된다