유니티(Unity)/2D 게임 만들기 8

2D 게임 만들기 (8) 프리팹(Prefab)으로 작업 줄이기

유니티에서 비슷한 게임 오브젝트를 여러 개 만들고자 할 때, 프리팹(Prefab)을 사용하여 만들어둔 오브젝트를 재사용할 수 있습니다. 프리팹이란? 1. 재사용 가능한 미리 만들어진 게임 오브젝트 에셋 2. 파일로 저장되어 현재 씬뿐 아니라 다른 씬에서도 사용 가능 사용하는 이유는? 비슷한 게임 오브젝트를 여럿 만들 때 매번 다시 설정하지 않아도 되기 때문!! (복사 & 붙여 넣기라고 생각하시면 편합니다) 프리팹을 만드는 방법은 매우 간단합니다. 게임 오브젝트를 프로젝트 창으로 Drag & Drop만 하면 됩니다!! 우선 Assets 폴더에 Prefabs폴더를 만들고, 현재 씬의 Gem 오브젝트와 platform-long 오브젝트를 Prefabs폴더로 Drag & Drop 해줍니다. 이렇게 만들어진 2개..

2D 게임 만들기 (7) Collider, Tag를 이용한 점수 내기

지난 포스팅에서는 GameController가 가진 Score(int)의 값으로 Canvas 위에 해당 값을 표시하는 내용까지 다뤘습니다. 그러면 이제 Score(int)의 값을 변화시키려면 GameController의 GetScore 함수를 호출 해야합니다. public void GetScore() { score += 100; SetText(); } 우선 Gem, 우리의 점수를 올려줄 오브젝트를 준비해봅시다. Gem의 sprite파일은 Sunnyland -> artwork -> Sprites -> Items -> gem폴더에 있습니다. https://whiny.tistory.com/10 2D 게임 만들기 (2) Animator, 유한 상태 머신 사용하기 이번 포스팅에서는 Animator 창에서 유한 상..

2D 게임 만들기 (6) 점수 시스템(Canvas)

이번 포스팅에서는 점수 시스템을 만들어보려고 합니다. 간단한 게임이지만, 점수 시스템이 필요하겠죠?? 하이어라키 창 우클릭 -> UI -> Canvas를 클릭해서 UI를 만들 준비를 해봅시다. 캔버스는 UI를 만들기 위해서는 가장 먼저 만들어야 하는 오브젝트입니다. 캔버스를 만들면 EventSystem이 자동으로 함께 생성되는데, Canvas위에서 일어나는 Input 관련 이벤트에 관여하는 오브젝트입니다. 하지만 이번 포스팅에서는 캔버스 위주로 설명하도록 하겠습니다. 우선 우리 게임의 UI가 다양한 해상도에 대응하도록 만들어보겠습니다. 캔버스에서 가장 많이 사용 되는 스케일 모드는 고정 픽셀 크기(Constant Pixel Size), 화면 크기에 따른 스케일(Scale With Screen Size) ..

2D 게임 만들기 (5) 캐릭터 움직이기

이전 포스팅에서는 PlayerInput 컴포넌트를 통해 키 입력을 받는 작업까지 마쳤습니다. 이번 포스팅에서는 PlayerController 컴포넌트를 통해 PlayerInput 컴포넌트에서 받은 값으로 캐릭터를 움직여보겠습니다. PlayerController 전체 코드입니다. using System.Collections; using System.Collections.Generic; using UnityEngine; public class PlayerController : MonoBehaviour { private PlayerInput playerInput; private Rigidbody2D playerRigidBody; public Collider2D footCollider; public float ..

2D 게임 만들기 (4) 캐릭터를 움직이기 위한 준비, 키 입력 받기

이번 포스팅에서는 지금까지 설정한 캐릭터를 직접 움직여 보려고 합니다. 지금의 캐릭터는 Transform, Sprite Renderer, Animator 이 세 개의 컴포넌트만 가지고 있습니다. 이제 여기에 Box Collider 2D, Rigidbody 2D를 추가해주겠습니다. Box Collider 2D - 직사각형의 형태로 2D 충돌을 감지하는 컴포넌트입니다. Offset과 Size를 조정하여 캐릭터의 발 위치로 조정하였습니다. Rigidbody 2D - 게임 오브젝트가 물리 제어로 동작하게 해주는 컴포넌트입니다. Mass(질량), Linear Drag(움직일 때 공기저항), Angular Drag(회전할 때 공기저항), Gravity Scale(몇 배의 중력을 적용할지) 등을 설정하였습니다. 그리..

2D 게임 만들기 (3) 유한 상태 머신, 전이(Transition) 설정

이번 포스팅에서는 전이(Transition) 조건을 설정해보겠습니다. 몇 가지 매개 변수(Parameter)들을 준비해봅시다. Animator 창에서 Parameters 탭 -> + 버튼을 누르고, 5가지 Parameter를 만들어봅시다. IsMove - Bool / 캐릭터가 움직이는지, 움직이지 않는지 판별해서 애니메이션을 전환하려고 합니다. OnAir- Bool / 캐릭터가 공중에 떠있는지, 지상을 밟고있는지 판별하려고 합니다. IsUp - Bool / 캐릭터가 점프 중인지, 추락 중인지 판별해서 전환하려고 합니다. Hurt - Trigger / 공격당할 경우 바로 피격 애니메이션을 재생하려고 합니다. Land - Trigger / Jump_Down 상태에서 착지할 경우 바로 Idle 애니메이션으로 ..

2D 게임 만들기 (2) Animator, 유한 상태 머신 사용하기

이번 포스팅에서는 Animator 창에서 유한 상태 머신을 이용해보겠습니다. 유한 상태 머신(Finite State Machine)이란 유한(Finite)한 수의 상태(State)가 있고, 한 번에 한 상태만 되도록 설계하는 방법입니다. 유한 상태 머신에서는 특정 상태에서 다른 상태로 전이(Transition)하여 현재 상태를 전환합니다. 위의 상태도를 보면 정지, 달리기, 점프가 유한한 수의 상태(State)들이고, 그 사이를 잇는 화살표가 전이(Transition)와 그 조건을 나타냅니다. 이제 직접 상태도를 구현해봅시다. 이전에 자동으로 생성된 Player의 Animation Controller를 더블클릭해줍니다. 그러면 Animator 창에서 위와 같은 모습을 볼 수 있습니다. 초기의 상태도에서 ..

2D 게임 만들기 (1) 에셋 가져오기, 애니메이션 준비

이번 포스팅부터는 간단한 2D 게임을 제작해보려고 합니다. 우선 에셋을 가져와볼 건데요. assetstore.unity.com/packages/2d/characters/sunny-land-103349 Sunny Land | 2D 캐릭터 | Unity Asset Store Elevate your workflow with the Sunny Land asset from Ansimuz. Find this & more 캐릭터 on the Unity Asset Store. assetstore.unity.com 유니티 에셋 스토어에서 이쁜 에셋이 있어서 이걸로 가져와 보겠습니다. 스토어와 유니티에 로그인을 하시고, 내 에셋에 추가하기를 하고, Unity에서 열기를 하면, 프로젝트에서 패키지 매니저가 뜨고, 지금까지 ..