6. Unity 엔진 기본 작동법

이규성·2023년 10월 11일
0

TIL

목록 보기
6/106

10/11 Unity 엔진으로 본격적인 게임 개발을 공부

Unity engine

게임 개발 프로그램이며 충돌, 중력, 탄성, 카메라 등의 개념을 직관적으로 활용할 수 있다.

화면 세팅 방법

window - layout - 2 by 3

project 우클릭 - one column layout

개발 화면의 개념

  • Scene : 실제 게임의 구성요소를 보는 곳. 실질적인 게임 개발 씬
  • Game : 게임이 실제로 보여지는 곳. play 버튼 클릭 후 볼 수 있음
  • Hierachy : 게임 내 구성요소를 볼 수 있는 곳. 개발 시 자주 필요
  • Project : 이 프로젝트에 포함된 파일들을 모아볼 수 있는 곳
  • Inspector : 클릭한 요소의 속성과 정보를 보여주는 곳

게임 개발 시작

우선 게임의 전체적인 해상도를 설정해준다.


1. MainScene(우클릭) → Game Object → 2D Object → Sprite → Square 클릭 → background로 이름 바꾸기
2. 색을 255,255,220,255로 맞추기
3. Scale을 X:6, Y:10으로 맞추기

배경화면 완성!

1. MainScene(우클릭) → 2D Object → Sprite → Square 클릭 → ground로 이름 바꾸기
2. 색을 50, 50, 50, 255로 맞추기
3. Scale을 X:6, Y:1.5으로 맞추기 + Position은 Y:-4.3으로 맞추기
4. Order in layer를 1로 맞추기 - 포토샵의 레이어와 같다.

게임 하단부에 UI를 출력할 박스 완성!

Assets 우클릭 후 Images 폴더를 생성 후 파일탐색기를 통해 폴더 안에 사용할 이미지를 넣기
1. MainScene(우클릭) → 2D Object → Sprite → Square 클릭 → rtan으로 이름 바꾸기
2. Sprite 부분에 르탄이1 이미지 끌어다놓기0
3. Order in Layer를 1로 바꾸기
4. Position 값을 Y:-2.9 로 바꾸기

게임 캐릭터 생성!

애니메이션, 캐릭터 움직이기

1. 애니메이션 폴더 만들기 (Asset → Animation)
2. 애니메이션 파일을 만들고, Loop Time에 체크

3. 이것을 만들어둔 르탄 캐릭터에 sprite에 끌어다놓기
4. Controller가 생긴 것을 확인!
- Controller는 : Animation을 컨트롤 하는 것
(예 - 보통 상태 / 맞을 때 / 뛸 때 어떤 애니메이션을 써라)
- Animation은 : 동작 파일

- Animation 만드는 방법
1. rtan_run.anim 더블 클릭 후 → 르탄이 캐릭터 클릭
2. 르탄이1, 2파일을 적당한 시간 간격으로 끌어다두기

르탄이가 움직인다!

캐릭터 움직이기

Visual Studio 세팅하기
Edit → Preferences → External Tools → Visual Studio Community 2019

캐릭터가 코드를 가진다면?
캐릭터에 코드를 작성하는 의미는? → "캐릭터가 동작 할 수 있게 만드는 것”
동작에서 꼭 알아야 할 두 가지 함수 → start (너는 태어날 때) / update (매 순간 이렇게 해라)

Script 만들기
1. Assets 우클릭
2. Create 클릭
3. Folder 만들기 이름은 Scripts
4. Create 클릭
5. C# script 클릭 하기 이름 rtan
6. rtan script를 더블 클릭하면 C#이 실행

public class rtan : MonoBehaviour
{
    float direction = 0.02f; // 객체가 이동할 벡터값을 선언
    // Start is called before the first frame update
    void Start() // 현재는 사용하지 않음
    {

    }

    // Update is called once per frame
    void Update()
    {
        if (transform.position.x > 2.8f) // 객체의 포지션 X 값이 2.8 보다 커진다면
        {                                   (벡터값 2.8은 게임 화면의 벽)
            direction = -0.02f;          // 벡터값을 -로 선언하여 반대로 이동한다.
            transform.localScale = new Vector3(-1, 1, 1);
            // 반대로 이동한다면 객체의 로컬스케일 x값을 -1로하여 이미지를 좌우반전 시킨다.
        }
        if (transform.position.x < -2.8f) // 객체가 반대편 벽에 닿는다면 다시 반대로 이동
        {
            direction = 0.02f;
            transform.localScale = new Vector3(1, 1, 1);
        }
        transform.position += new Vector3(direction, 0, 0);
        // 객체의 포지션 벡터값에 += 뒤의 벡터값을 더한다.
           즉 direcrion 값 만큼 계속해서 x값이 증가하여 객체가 움직인다.
    }
}

르탄이가 좌우로 움직이며 벽에 닿는 순간 반대로 움직인다!

public class rtan : MonoBehaviour
{
    float direction = 0.02f;
    float toward = 1.0f;
    // Start is called before the first frame update
    void Start()
    {

    }

    // Update is called once per frame
    void Update()
    {
        if (Input.GetMouseButtonDown(0)) // 마우스 클릭의 관용어
        {
            toward *= -1;                // *= 앞의 데이터에 뒤의 값을 곱해준다.
            direction *= -1;                즉 방향을 반대로 바꿔준다.
        }
        if (transform.position.x > 2.8f)
        {
            direction = -0.02f;
            toward = -1.0f;
        }
        if (transform.position.x < -2.8f)
        {
            direction = 0.02f;
            toward = 1.0f;
        }
        transform.localScale = new Vector3(toward, 1, 1);
        // 객체의 좌우반전을 toward 값으로 초기화하여 코드를 간략화
        transform.position += new Vector3(direction, 0, 0);
    }
}

마우스로 화면을 클릭하면 르탄이가 즉시 반대로 움직인다!

Feedback

우선 C#을 미리 공부하지 않았으면 내용 이해에 굉장히 난항을 겪었으리라고 생각된다. Unity의 첫인상은 UI가 직관적이어서 사용에 불편함을 겪지 않는다는 점이 장점인 듯 싶다. 하지만 역시 관건은 Script에 작성하는 code다.. 강의에서 기능의 개념 보다는 code의 동작, 결과를 알려주는 편이라서 따로 공부가 필요해보인다.

0개의 댓글