반응형

오늘은 지형을 확장하고 적을 배치하는 것까지 알려드릴게요.

 

1. 지형을 확장하기

지형은 타일을 추가하셔서 확장하시면 됩니다.

저는 아래처럼 임의로 지형을 추가했어요.

지형을 생성하는 방법이 기억나지 않으시면 아래 내용을 참고해주세요.

프로젝트 생성 및 지형 만들기

 

타일을 추가해서 확장된 지형

 

지형을 확장하신 후에는 Hierarchy 윈도우에 오브젝트를 추가하고 Environments라는 명칭으로 변경해 주세요.

 

Environments 오브젝트가 추가된 모습

 

지형을 위한 타일맵을 다운받았을 때 에셋에 배경을 위한 이미지들도 포함되어 있었습니다.

위치는 Assets > Cainos > Pixel Art Platformer - Village Props > Texture 이에요.

여기서 원하시는 이미지들을 Scene에 끌어다 놓고 배치해 보세요.

 

배경을 위한 이미지들

 

저는 아래처럼 간단하게 배치했어요.

 

배경 이미지가 적용된 지형의 모습

 

그리고 배치한 이미지들은 아래처럼 Environments 오브젝트 하위로 이동시켜 주세요.

그러면 배경 이미지들을 관리하기 쉬워지고, Hierarchy 윈도우가 지저분해지는 것을 방지할 수 있어요.

 

배경 이미지들을 Environments 오브젝트에 배치한 모습

 

2. 적 추가하기

이번에는 적을 추가하기 위해서 Enemies라는 오브젝트를 추가해 주세요.

 

Enemies 오브젝트를 추가한 모습

 

그리고 데모의 캐릭터 프리팹을 Hierarchy창으로 끌어다가 추가해 주세요.

캐릭터 프리팹의 위치는 Assets > Prototype Hero Demo - Pixel Art > Demo 입니다.

 

프리팹(Prefab)은 재사용 가능한 에셋입니다.
간단하게 게임 내에서 동일한 모습과 기능을 하는 오브젝트를 추가하기 위해 사용하는 템플릿이라고 이해하시면 됩니다.
재사용 하고 싶은 오브젝트가 있다면 이를 프리팹으로 변환해서 사용하면 되며, 프리팹의 수정 사항들은 복사본에 일괄적으로 반영됩니다.
그래서 모든 복사본을 하나씩 수정할 필요가 없습니다.

 

데모 캐릭터의 프리팹

 

데모 캐릭터의 프리팹을 추가하면 기존 캐릭터와 겹쳐서 보입니다.

그래서 위치를 아래처럼 조정했습니다.

 

추가된 캐릭터 오브젝트

 

이제 데모 캐릭터를 변경하여 적을 만들어보죠.

우선, Prototype Hero Demo 스크립트를 해제해 주세요.

그렇지 않으면 키 입력이 발생할 때마다 캐릭터와 동일하게 움직입니다.

그 후에는 색상을 마음대로 변경해 주시고, Flip 항목에서 X를 체크해 주세요.

그러면 적 캐릭터가 기존과 다르게 왼쪽을 바라보게 됩니다.

 

적 캐릭터 설정 방법

 

저는 5개의 적 캐릭터를 각기 다른 색상으로 배치했습니다.

배치된 위치는 각 지형의 끄트머리입니다.

 

적이 배치된 모습

 

이제 Scene을 플레이해보면 아래처럼 확장된 지형에 적들이 배치된 것을 확인하실 수 있습니다.

 

확장된 지형에 적을 배치한 모습

 

그리고 적 캐릭터들은 관리하기 쉽게 Enemies 오브젝트의 하위로 배치해 주세요.

 

Enemies 오브젝트에 적 캐릭터를 배치한 모습


오늘은 어려운 내용이 없어서 질문하실 내용도 없을 것 같네요.

지형도 적 캐릭터도 마음대로 배치해보시고 플레이 상태에서 어떻게 보이는지 확인해 보세요.

반응형
반응형

지난 시간에 캐릭터가 움직일 때마다 효과음이 들리도록 적용하고, 카메라가 캐릭터를 따라다니게 했습니다.

오늘은 지형 이동 시 틈새에 끼이는 문제를 해결하려고 해요.

캐릭터가 지형을 이동할 때 어색한 원인은 타일의 경계 부분에서 발생하는 충돌 오류 때문입니다.

앞서 지형을 생성하고 캐릭터가 지형을 벗어나지 않도록 타일맵에 Tilemap Collider 2D를 적용했었어요.

그래서 현재는 각 타일마다 콜라이더를 갖고 있습니다.

 

이런 경우 저렇게 타일의 경계 부분에서 오류가 발생하는 문제도 있지만, 물리 시스템 연산이 무거워지기 때문에 지형이 커지면 게임이 느려질 수 있습니다.

문제를 해결하기 위해서는 Composite Collider 2D를 사용해야 돼요.

Composite Collider 2D를 사용하면 타일맵의 콜라이더들을 통합하여 한 개의 콜라이더를 만들 수 있습니다.

타일맵에 Composite Collider 2D를 추가해 주세요.

 

Composite Collider 2D 추가 방법

 

그러면 아래처럼 타일맵에 Rigidbody 2D와 Composite Collider 2D가 추가됩니다.

Rigidbody 2D는 Composite Collider 2D 추가 시 자동으로 함께 추가됩니다.

Composite Collider 2D를 추가한 후에는 기존에 있던 Tilemap Collider 2D의 Used By Composite를 체크해 주세요.

이 옵션은 Composite Collider 2D를 사용하겠다는 것을 의미합니다.

그리고 Rigidbody 2D의 Body Type은 Static으로 변경해 주세요.

Static으로 설정하시면 움직일 수 없는 물체로 간주되어 물리 연산을 최적화하는데 도움이 됩니다.

 

콜라이더 설정 방법

 

여기까지 따라하시면 1차적인 지형 수정은 완료됩니다.

아래 이미지를 통해 Used By Composite 옵션 값에 따른 콜라이더의 차이를 확인할 수 있어요.

왼쪽의 이미지는 Composite Collider 2D를 사용하지 않는 경우입니다.

그래서 각 타일마다 초록색으로 격자 표시가 있으며, 이는 타일별로 갖고 있는 콜라이더들을 나타냅니다.

 

오른쪽의 이미지는 Composite Collider 2D를 사용하는 경우입니다.

그래서 ㅁ모양의 지형 1개가 1개의 콜라이더를 갖고 있는 모습을 확인할 수 있어요.

 

Used By Composite 옵션에 따른 콜라이더의 변화

 

이제 플레이를 해보면 평지 이동 시 어색한 부분이 없어진 것을 확인하실 수 있어요.

그러나 경사 부분은 아직 이상하네요.

 

 

평지 이동 시 지형 오류가 해결된 모습

 

타일맵을 확대해서 경사 부분을 자세히 보시면 아래처럼 미세한 틈들이 보이네요.

그래서 경사 이동 시 충돌 오류가 발생하여 움직임이 이상하게 보이는 거죠.

 

경사 부분의 틈새

 

저는 이 문제를 편법을 사용해서 해결했습니다.

더 좋은 방법이 있는지는 아직 모르겠네요.

우선, 타일맵 하위에 아래처럼 오브젝트를 하나 추가해 주세요.

 

타일맵 아래에 오브젝트가 추가된 모습

 

그리고 Box Collider 2D를 추가해 주세요.

 

Box Collider 2D 추가 방법

 

그러면 아까 추가한 오브젝트의 위치가 아래처럼 캐릭터 쪽에 있다는 것을 확인하실 수 있어요.

 

추가된 오브젝트의 위치

 

이제 이 오브젝트를 경사 부분으로 이동시켜 주세요.

 

오브젝트를 이동시킨 모습

 

오브젝트의 이동, 회전, 크기 조절은 아래의 붉은색 박스의 아이콘들로 가능합니다.

 

이동, 회전, 크기 조절 기능

 

그런 후에는 경사에 맞춰서 오브젝트를 회전시켜 주세요.

 

 

오브젝트의 기울기를 맞춰 주신 후에는 오브젝트의 크기를 조절해 주세요.

최종적으로는 아래처럼 기존에 틈새가 있던 부분을 완전히 덮어주실 수 있게 오브젝트를 수정해 주세요.

 

새로 추가한 오브젝트로 경사 부분의 콜라이더를 덮어준 모습

 

쉽게 따라하실 수 있도록 추가된 오브젝트의 정보를 알려드릴게요.

아래 내용을 그대로 입력하시면 위의 이미지와 동일하게 오브젝트를 배치할 수 있어요.

 

오브젝트의 위치 정보

 

이제 Scene을 플레이해보면 경사 부분에서 끼이는 문제가 해결된 것을 확인하실 수 있어요.

 

경사 부분의 끼임 문제가 해결된 모습

만들어 두었던 자료가 사라져서 자료를 새로 만들었네요.

혹시 질문사항, 수정이 필요한 부분이나 개선점 등이 있으시다면 댓글로 남겨주세요.

반응형
반응형

지난 시간에는 데모 스크립트를 사용해서 캐릭터에 애니메이션을 적용하고, 점프 기능을 추가했었습니다.

그리고 오늘은 캐릭터가 이동하고 점프할 때마다 효과음이 들리도록 설정하려고 해요.

또한, 지형 이동 시 카메라가 캐릭터를 따라다니도록 해보죠.

 

1. 효과음 적용하기

데모처럼 캐릭터가 움직일 때 효과음을 적용해보죠.

AudioManager라는 오브젝트를 1개 추가해주세요.

 

생성된 AudioManager

 

AudioManager 오브젝트에 AudioManager_PrototypeHero 스크립트를 끌어다가 반영해 주세요.

AudioManager_PrototypeHero 스크립트의 위치는 Assets > Prototype Hero Demo - Pixel Art > Demo 입니다.

 

AudioManager_PrototypeHero 스크립트 반영

 

그리고 아래의 +버튼을 클릭해서 효과음을 추가해보죠.

 

AudioManager_PrototypeHero 스크립트가 적용된 모습

 

효과음들은 Assets > Prototype Hero Demo - Pixel Art > Audio에 있습니다.

 

효과음 위치

 

아래 내용을 그대로 따라해서 효과음을 반영해주세요.

만약에 효과음을 반영하셨는데 플레이 시 효과음이 안들리는 경우에는 아래 설정에서 Volume이 1인지 확인해주세요.

 

효과음 설정 방법

 

그리고 효과음이 제대로 적용되면 데모와 동일하게 캐릭터가 점프하거나 움직일 때마다 소리가 들립니다.

 

효과음들이 적용된 모습

 

2. 시네 머신 적용하기

캐릭터가 지형을 이동할 때 카메라가 따라다니도록 설정하려면 시네 머신(Cinemachine)을 적용하면 됩니다.

그리고 시네 머신은 패키지 매니저를 통해서 설치한 후에 사용할 수 있어요.

우선, Window > Package Manager를 선택해 주세요.

 

Package Manager 메뉴

 

Package Manager 윈도우에서 Cinemachine을 선택하고 설치해 주세요.

오른쪽 하단의 Install 버튼을 클릭하시면 설치됩니다.

 

Cinemachine 설치

 

Cinemachine이 설치되면 유니티 상단의 메뉴 바에 메뉴가 추가됩니다.

그리고 Cinemachine > Create 2D Camera 메뉴를 선택해 주세요. 

 

Cinemachine와 Create 2D Camera 메뉴

 

그러면 기존의 Main Camera 옆에는 빨간색 아이콘이 추가되고, CM vcam1이라는 가상 카메라가 추가됩니다.

그리고 Main Camera의 Inspector 창을 보시면 CinemachineBrain이라는 컴포넌트가 추가되어 있습니다.

이 컴포넌트에 기본 값으로 CM vcam1이 설정되어 있는데요, 가상 카메라를 활용하면 여러 가지 연출을 할 수 있습니다.

이 부분은 나중에 알려드릴게요.

 

Cinemachine 2D Camera가 추가된 모습

 

이제 카메라가 캐릭터를 따라다니도록 하시려면, CM vcam1를 선택하고 Inspector 윈도우를 봐주세요.

아래처럼 Follow라는 값이 None (Transform)으로 나올거에요.

캐릭터를 끌어다가 여기에 설정해주세요.

참고로, 카메라에서 필요한건 캐릭터의 위치 정보입니다.

당연히 카메라가 캐릭터의 위치 정보를 알고 있어야 캐릭터를 따라다닐 수 있겠죠?

 

Follow 설정 모습

 

여기까지 구현한 내용을 플레이 해보시면 카메라가 캐릭터를 잘 따라다니는 모습을 보실 수 있어요.

그런데 지형을 이동할 때 캐릭터가 어색하네요.

끼임 현상이 발생하는 것 같은데, 이 부분은 다음 시간에 알려드릴게요.

 

카메라가 캐릭터를 따라다니는 모습

미리 준비했던 자료를 날려서 다시 준비하느라 시간이 걸렸네요.

혹시 질문사항, 수정이 필요한 부분이나 개선점 등이 있으시다면 댓글로 남겨주세요.

 

 

반응형
반응형

이번에는 캐릭터에 애니메이션을 적용하고 점프 기능을 추가하려고 합니다.

따라 해보시면서 궁금하신 부분들은 댓글 남겨주세요.

 

지난 시간에는 HeroInput 이라는 스크립트로 캐릭터의 위치를 조작할 수 있었습니다.

그러나 오늘은 데모 버전에서 사용된 스크립트를 그대로 사용하려고 해요.

게임 개발 튜토리얼에서는 무료 에셋들을 사용해서 간단한 게임을 만드는 방법을 알려드리고 있습니다.

그래서 실제로 게임 개발 시 필요한 세세한 부분들게임 개발 튜토리얼 이후에 포스팅하려고 합니다.

 

1. 데모 스크립트 사용하기

우선, 데모 버전에서 사용된 스크립트를 확인해보죠.

파일은 Assets > Prototype Hero Demo - Pixel Art > Demo 위치에 있어요.

그리고 스크립트의 명칭은 PrototypeHeroDemo 입니다.

 

데모에서 사용된 스크립트의 경로

 

PrototypeHeroDemo 스크립트를 Inspector 윈도우에서 보면 필요한 소스 코드들이 작성되어 있습니다.

지금은 소스 코드를 이해하는 대신에 사용하는 방법을 알려드릴게요.

 

PrototypeHeroDemo 스크립트의 내용

 

PrototypeHeroDemo 스크립트를 끌어서 캐릭터 오브젝트에 적용해 주세요.

 

PrototypeHeroDemo 스크립트를 캐릭터에 적용

 

그러면 아래처럼 캐릭터의 Inspector 윈도우에 스크립트가 적용된 것을 보실 수 있습니다.

 

PrototypeHeroDemo 스크립트가 적용된 모습

 

이제는 앞서 사용했던 Hero Input 스크립트를 제거해 주세요.

Hero Input 스크립트 오른쪽의 점 세개를 클릭하시고 Remove Component를 클릭해서 스크립트를 제거하실 수 있습니다.

 

스크립트 삭제 방법

 

그 후에 Scene을 실행하면 아래처럼 에러가 발생합니다.

에러 내용은 "NullReferenceException: Object reference not set to an instance of an object" 이네요.

새로 적용한 스크립트에 설정하지 않은 것들이 있어서 에러가 발생합니다.

 

NullReferenceException: Object reference not set to an instance of an object 에러 발생

 

2. 이펙트들 추가하기

캐릭터의 Inspector 윈도우를 보시면 Effects 부분에 None (Game Object) 라고 적혀 있는게 보이네요.

이게 바로 위의 에러를 발생시키는 원인입니다.

필요한 오브젝트가 설정되어 있지 않기 때문에 None (Game Object)라고 표시되어 있어요.

 

캐릭터 스크립트의 에러 원인

 

설정이 필요한 오브젝트들은 캐릭터가 이동할 때 나오는 이펙트들이에요.

그래서 Assets > Prototype Hero Demo - Pixel Art > Demo 경로에 있는 JumpDust, LandingDust, RunStopDust 파일들을 동일한 이름에 배치해 주세요.

바로 아래처럼 적용하시면 됩니다.

 

이펙트 파일들이 적용된 모습

 

그런데 이렇게 설정해도 아직 에러가 발생합니다.

설정해야 될 것들이 남아있기 때문이죠.

 

3. GroundSensor 추가하기

캐릭터 하위로 GroundSensor 라는 오브젝트를 추가해 주세요.

GroundSensor 오브젝트는 캐릭터가 지형과 접촉된 상태인지 확인하는 역할을 합니다.

그리고 Assets > Prototype Hero Demo - Pixel Art > Demo 위치에 있는 Sensor_Prototype 파일을 GroundSensor 오브젝트로 끌어서 적용해 주세요.

 

GroundSensor에 Sensor_Prototype 파일 적용

 

그러면 아래처럼 Sensor_Prototype 스크립트가 적용된 모습을 보실 수 있습니다.

그리고 GroundSensor 오브젝트가 지형과 접촉된 상태인지 확인하기 위해서 Box Collider 2D를 추가해 주세요.

그 후에는 빨간색 박스의 데이터를 참고해서 여러분의 데이터들을 수정해 주세요.

GroundSensor의 위치와 콜라이더 박스의 크기 조절을 위해서 변경해 줄 필요가 있습니다.

 

Sensor_Prototype과 Box Collider 2D가 적용된 모습

 

그리고 캐릭터의 Rigidbody 2D의 값을 수정해 주세요.

특히 Freeze RotationZ값을 꼭 체크해 주세요.

그래야 캐릭터가 이동하면서 넘어지지 않습니다.

 

캐릭터 Rigidbody 2D의 데이터 변경

 

그럼 이제 Scene을 다시 실행해볼까요?

그러면 또 다시 에러를 만나게 됩니다.

이번 에러는 "MissingComponentException: There is no 'Animator' attached to the "PrototypeHero" game...(생략)"이네요.

캐릭터에 Animator가 없다는 것을 의미합니다.

그리고 이 Animator는 캐릭터의 애니메이션을 위해서 사용됩니다.

 

 

캐릭터의 Animator 에러

 

4. Animator 추가하기

캐릭터에 Animator를 추가해 주세요.

Animator는 아래처럼 Miscellaneous 하위에 있습니다.

 

Animator 추가 방법

 

Animator를 추가하면 아래처럼 적용된 모습을 확인하실 수 있어요.

그리고 Controller를 선택하시면 선택 가능한 목록들이 나타납니다.

여기서 PrototypeHero를 선택해 주세요.

PrototypeHero는 Assets > Prototype Hero Demo - Pixel Art > Animations > Prototype Hero 위치에 있습니다.

 

Controller 선택 화면

PrototypeHero를 선택하시면 아래처럼 Animator 컴포넌트의 Controller 부분에 PrototypeHero 컨트롤러가 보입니다.

 

PrototypeHero 컨트롤러가 선택된 모습

 

이제 플레이 버튼을 클릭해서 실행하면 에러는 사라지고, 캐릭터가 움직일 때마다 애니메이션 되는 모습을 확인하실 수 있어요.

그런데 아직은 어색한 모습들이 보이네요.

 

데모 스크립트로 캐릭터 애니메이션과 점프 기능 추가

하는 일이 많다보니 자료만 준비해놓고 이제서야 글을 올리네요.

혹시 질문사항, 수정이 필요한 부분이나 개선점 등이 있으시다면 댓글로 남겨주세요.

반응형
반응형

이번에는 앞서 그린 지형 위에 캐틱터를 그려서 움직이게 하려고 합니다.

따라해보시면서 궁금하신 부분들은 댓글 남겨주세요.

 

1. 유니티 프로젝트에 2D 캐릭터 임포트하기

지난 시간에 지형 에셋을 무료로 다운 받았던 것처럼 캐릭터도 무료로 다운 받아주세요.

2D 캐릭터는 유니티 에셋 스토어 > 2D > 캐릭터 카테고리에서 찾으시면 됩니다.

 

유니티 에셋 스토어 > 2D > 캐릭터 카테고리의 화면

 

저는 아래의 에셋을 선택했어요.

캐릭터가 심플하면서 상당히 쓸만해 보였거든요.

 

 

Prototype Hero Demo - Pixel Art | 2D 캐릭터 | Unity Asset Store

Elevate your workflow with the Prototype Hero Demo - Pixel Art asset from Sven Thole. Find this & more 캐릭터 on the Unity Asset Store.

assetstore.unity.com

 

지난 번처럼 내 에셋에 추가하기를 눌러주세요.

 

2D 캐릭터 무료 에셋

 

내 에셋으로 이동하시면 지난 번에 사용했던 지형 에셋과 함께 추가된 에셋을 확인하실 수 있어요.

 

내 에셋 화면

 

이제 캐릭터 에셋을 유니티에서 열어보면 아래처럼 Pakage Manager 윈도우가 노출되요.

 

Pakage Manager 윈도우

 

전과 동일하게 에셋을 다운로드/임포트 해주세요.

 

에셋 다운로드/임포트

 

2. 데모 파일 살펴보기

유니티에서 에셋을 임포트하시면 아래처럼 Assets 폴더 하위에 Prototype Hero Demo 폴더가 추가됩니다.

그리고 Prototype Hero Demo 폴더 하위에는 5개의 폴더가 있어요.

 

Prototype Hero Demo  폴더

 

그 중에서 Demo 폴더의 Demo Scene을 열어서 살펴볼게요.

 

Prototype Hero Demo > Demo 폴더의 Demo 파일

 

Demo Scene을 실행하면 Hierarchy 윈도우를 통해 어떤 요소들이 있는지 확인할 수 있어요.

 

Hierarchy 윈도우와 Scene 윈도우

 

Demo를 실행하면 아래의 영상처럼 플레이 됩니다.

캐릭터를 좌/우로 이동하면서 점프도 가능하고,

이동 중에 상황에 따라서 효과음과 함께 캐릭터의 모션이 변경되고 있네요.

 

데모 플레이 영상

 

이전 시간에 지형 팔레트를 설정한 것처럼, 캐릭터도 이미지 파일을 모션 별로 분리해서 사용하고 있어요. 

 

모션 별로 분리된 캐릭터 파일

 

3. 지형 위에 캐릭터 그리기

이제 지형 위에 캐릭터를 그리기 위해서 Sprites 폴더의 캐릭터 이미지를 사용하려고 합니다.

사실, Demo 폴더에 미리 준비된 에셋이 있지만 공부할겸 캐릭터 이미지를 사용해서 캐릭터를 그려볼게요.

PrototypeHero.png 파일을 끌어서 Hierarchy 윈도우로 이동시켜 주세요.

 

캐릭터 이미지 사용 (예시)

 

그러면 아래처럼 PrototypeHero_0라는 명칭의 오브젝트가 생성됩니다.

저는 데모처럼 PrototypeHero로 이름을 변경해 주었네요.

 

캐릭터 오브젝트의 이름 변경

 

Hierarchy 윈도우에 캐릭터를 추가하시면, Scene 윈도우에도 아래처럼 캐릭터가 보입니다.

그리고 Scene을 플레이하면 지형 위에 캐릭터가 공중부양 하듯이 그려지는 모습을 볼 수 있습니다.

 

캐릭터가 추가된 모습 (예시)

 

그리고 캐릭터가 데모처럼 지형 위에서 이동하려면 물리적인 요소가 필요합니다.

캐릭터에 Rigidbody 2D를 추가해주세요.

추가 방법은 캐릭터의 Inspector 윈도우에서 Add Component 버튼을 클릭하셔서 진행하시면 됩니다.

 

Rigidbody 2D 추가 (예시)

 

Rigidbody 2D를 추가하면 어떻게 되는지 아래 영상으로 확인할 수 있어요.

캐릭터가 그냥 아래로 떨어져 버리네요.

 

캐릭터에 Rigidbody 2D를 적용한 영상

 

데모에서는 지형과 캐릭터에 콜라이더 2D가 적용되었기 때문에 캐릭터가 위에서 떨어져도 캐릭터의 위치가 지형 아래로 벗어나지 않습니다.

참고로, 콜라이더 2D는 물리적인 충돌을 감지하기 위한 요소입니다.

콜라이더 2D의 모양에 따라서 충돌 체크하는 방식이 다르며, 명칭도 달라집니다.

 

1) 원형 충돌 영역을 위한 써클 콜라이더 2D.
2) 정사각형 및 직사각형 충돌 영역을 위한 박스 콜라이더 2D.
3) 자유형 충돌 영역을 위한 폴리곤 콜라이더 2D.
4) 자유형 충돌 영역 및 완전히 닫히지 않은 영역(원형 컨벡스 코너 등)을 위한 에지 콜라이더 2D.
5) 원형 또는 마름모 모양의 충돌 영역을 위한 캡슐 콜라이더 2D.
6) 박스 콜라이더 2D 및 폴리곤 콜라이더 2D를 병합하기 위한 복합 콜라이더 2D.

 

 

데모 지형과 캐릭터에 적용된 콜라이더 2D

 

우리도 데모처럼 콜라이더 2D를 지형과 캐릭터에 적용하면 문제가 해결됩니다.

우선, Hierarchy 윈도우에서 타일맵을 선택해주세요.

그리고 Inspector 윈도우에서 아래처럼 Tilemap Collider 2D를 추가해 주세요.

 

Tilemap Collider 2D 추가 방법

 

그러면 다음과 같이 타일맵에 콜라이더 2D가 적용된 것을 확인하실 수 있어요.

 

Tilemap Collider 2D 적용

 

이제는 캐릭터에도 콜라이더 2D를 적용해 주세요.

캐릭터의 Inspector 윈도우에서 Box Collider 2D를 추가해 주시면 됩니다.

 

Box Collider 2D 위치

 

캐릭터에 Box Collider 2D를 추가하시면 아래처럼 형광색의 네모난 박스가 추가됩니다.

이제 이 박스의 위치와 크기를 캐릭터에 맞게 조절해 주세요.

 

캐릭터에 Box Collider 2D 적용

 

캐릭터의 Box Collider 2D 정보를 다음과 같이 변경하시면 캐릭터에 딱 맞는 크기로 변경됩니다.

  x y
Offset -0.03125 0.71875
Size 0.5625 1.3125

 

캐릭터의 Box Collider 2D 정보 수정

 

그러면 이제 캐릭터가 지형 밖으로 벗어나지 않는다는 것을 아래의 영상으로 확인하실 수 있습니다.

 

지형과 캐릭터에 Collider 2D를 적용한 영상

 

4. 캐릭터 움직이기

이제는 캐릭터를 움직이기 위해서 C# 스크립트가 필요합니다.

다음과 같이 Scenes 폴더에 스크립트를 추가해 주세요.

 

C# 스크립트 추가 방법

 

스크립트의 이름은 HeroInput으로 설정해 줬어요.

 

생성된 HeroInput 스크립트

 

이제 생성한 스크립트를 Inspector 윈도우에서 Open 버튼을 클릭하여 수정해야 됩니다.

 

HeroInput 스크립트를 오픈

 

유니티를 설치하실 때 함께 설치된 Microsoft Visual Studio 2019를 선택해 주세요.

저도 튜토리얼을 작성하면서 유니티를 처음 설치했기 때문에 아래처럼 설정 화면이 노출되고 있습니다.

 

C# 스크립트 수정을 위해서 Microsoft Visual Studio 2019 실행

 

스크립트의 Update() 안에 아래의 소스 코드를 복사해서 붙여 넣어 주세요.

소스는 반드시 "{"와 "}" 사이에 추가하셔야 돼요.

 

1
2
3
4
5
float horizontal = Input.GetAxis("Horizontal");
Debug.Log(horizontal);
Vector2 position = transform.position;
position.x = position.x + 0.1f * horizontal;
transform.position = position;
cs

 

소스를 추가하신 후에 저장을 해주시면 유니티의 스크립트 내용이 아래처럼 갱신됩니다.

소스 코드는 키 입력이 발생되면 캐릭터의 위치를 변경해 주는 간단한 내용입니다.

 

수정된 HeroInput 스크립트

 

참고로, Horizontal 입력에 대해서 궁금하시면 아래처럼 Edit > Project Settings > Input Manager에서 정보를 확인하실 수 있어요.

 

Horizontal 정보

 

이제 이 스크립트를 캐릭터에 적용해 주세요.

스크립트를 캐릭터로 드래그해주시면 됩니다.

 

캐릭터에 Hero Input 스크립트 반영

 

Scene을 플레이 했을 때, Console 윈도우를 보시면 위 소스코드의 Debug.Log(horizontal); 덕분에 입력된 키 값이 출력되는 것을 확인할 수 있습니다.

 

Debug.Log(horizontal)

 

캐릭터에 적용된 스크립트 때문에 Scene을 플레이하시면 키보드의 키와 키를 이용해서 캐릭터를 움직일 수 있습니다.

영상을 보시면 아쉬운 부분이 있지만, 개선할 부분들은 다음에 포스팅하는 글에서 확인하세요.

 

캐릭터 이동 영상

이 글을 보시고 수정이 필요한 부분이나 개선점 등이 있으시다면 댓글로 남겨주세요.

반응형
반응형

1. 게임 프로젝트 생성

유니티로 게임을 개발하기 위해서는 프로젝트를 생성해야 된다.

그리고 프로젝트 생성은 앞서 설치했던 Unity Hub를 통해서 간단하게 생성할 수 있다.

Unity Hub와 유니티 설치 방법이 궁금하면 아래 링크를 참고하기 바란다.

 

 

Unity Hub로 유니티 설치하기

게임을 개발하기 위해서는 여러가지 방법들이 있겠지만, 역시 엔진을 사용하는 것이 여러모로 편할 것이다. 그리고 나는 언리얼 엔진을 제외하고 여러 게임 엔진들을 사용해봤다. 2D, 3D 게임 개

yung.tistory.com

 

우선, Unity Hub를 실행하자.

참고로 나는 기존 포스팅에서 유니티 2021.1.13f1 버전을 설치했지만,
확인하고 싶은 내용이 있어서 기존에 설치했던 Unity Hub와 유니티를 삭제했다.
그후에 D 드라이브에 Unity Hub와 유니티 2020.3.13f1 버전을 새로 설치했다.
만약에 기존의 포스팅을 통해서 2021.1.13f1 버전을 설치했다면,
굳이 설치된 것들을 삭제하고 2020.3.13f1 버전을 설치할 필요는 없다.

 

 

D 드라이브에 새로 설치한 버전

 

Unity Hub를 실행해서 프로젝트 화면을 보면, 아래처럼 "프로젝트가 없습니다"라는 문구를 확인할 수 있다.

오른쪽의 새로 생성 버튼을 클릭해서 프로젝트를 추가하자.

 

Unity Hub 실행 화면

 

새로 생성 버튼을 클릭하면 다음과 같이 프로젝트의 유형과 이름, 저장 위치를 선택할 수 있다.

현재 포스팅하고 있는 "게임 개발 튜토리얼"은 2D 게임이기 때문에 2D를 선택하자.

나는 나중에 출시할 게임 프로젝트의 이름으로 AREBIL을 입력했다.

똑같이 따라할 필요없이 각자 필요한 이름으로 입력하자.

 

유니티 프로젝트 생성 화면

 

저장 위치의 경우, 자신이 기억하기 쉬운 폴더를 선택하자.

내 경우는 사용자 폴더 > Dev > Game 폴더를 선택해서 프로젝트를 추가했으며,

프로젝트 생성 시 유니티 프로젝트에 필요한 파일들이 자동으로 설정된다.

 

생성된 유니티 프로젝트의 하위 폴더들 (예시)

 

프로젝트를 생성하면 다음과 같이 유니티가 자동으로 실행된다.

 

유니티 실행 중 화면

 

자동으로 실행된 유니티의 모습은 다음과 같다.

처음에 유니티를 접하게 되면 너무 낯설고 용도를 알 수 없는 기능들 때문에 당황할 수 있겠지만,

튜토리얼을 차근차근 따라 하면 익숙해질 테니 겁먹을 필요가 전혀 없다.

 

유니티가 실행된 화면

 

2. 지형 에셋 추가하기

지형을 만들기 위해서는 이미지 파일이 필요하다.

튜토리얼을 위해서 이미지 파일을 만들어서 제공할 수도 있지만,

스스로 필요한 파일들을 찾아서 사용할 수 있도록 에셋을 추가하는 방법을 알아보자.

 

에셋스토어에서 유니티 프로젝트를 위한 에셋들을 다운로드 받을 수 있다.

좋은 퀄리티의 에셋들은 유료로 결제해서 사용해야 되지만, 무료 에셋만으로도 괜찮은 것들이 많다.

 

참고로, 사용이 제한된 에셋만 아니라면 무료 에셋을 상용화 게임에 사용할 수 있다.

아래 링크를 클릭해서 에셋스토어로 이동하자.

 

 

에셋스토어

여러분의 작업에 필요한 베스트 에셋을 찾아보세요. 유니티 에셋스토어가 2D, 3D 모델, SDK, 템플릿, 툴 등 여러분의 콘텐츠 제작에 날개를 달아줄 다양한 에셋을 제공합니다.

assetstore.unity.com

 

에셋을 다운로드 받기 위해서는 로그인이 필요하며,

로그인한 상태에서 에셋스토어의 2D 메뉴를 선택하자.

 

에셋스토어 화면

 

2D 메뉴를 클릭하면 다음과 같은 화면으로 이동한다.

여기서 하위 카테고리 영역의 주변환경을 클릭하자.

 

에셋스토어의 2D 카테고리 화면

 

2D 주변환경 화면에서 인기도를 가격(낮은 가격부터 오름차순)으로 선택하자.

 

에셋스토어의 2D > 주변환경 카테고리 화면

 

낮은 가격으로 오름차순 정렬을 하면 FREE로 표시된 에셋들이 보인다.

 

무료 에셋들

 

나는 그 중에서 Pixel Art Platformer를 선택했다.

지형 이미지와 배경을 위한 이미지들이 마음에 들어서 선택했다.

 

 

 

Pixel Art Platformer - Village Props | 2D 주변환경 | Unity Asset Store

Elevate your workflow with the Pixel Art Platformer - Village Props asset from Cainos. Find this & more 주변환경 on the Unity Asset Store.

assetstore.unity.com

 

Pixel Art Platformer 에셋 화면

 

내 에셋에 추가하기를 클릭하면 아래처럼 약관에 동의해야 된다.

 

에셋스토어 약관 동의 화면

 

약관에 동의하면 바로 내 에셋에 추가된다.

 

 

그리고 내 에셋 화면을 보면 추가된 에셋을 확인할 수 있다.

 

 

Unity에서 열기 버튼을 클릭하면 앞서 생성했던 AREBIL 프로젝트에 에셋을 적용할 수 있다.

오른쪽 하단에 Download 버튼을 클릭해서 에셋을 다운로드 받자.

그후에 Import 버튼으로 에셋을 내 프로젝트에 불러오면 된다.

 

유니티에서 에셋 다운로드 화면

 

유니티에서 에셋 임포트 화면

 

에셋이 유니티 프로젝트에 추가되면 다음과 같이 Assets 폴더에 Cainos라는 폴더가 추가된다.

참고로, Cainos 폴더는 우리가 다운로드하고 임포트한 에셋의 저작자 이름이다.

 

Project 윈도우는 유니티 프로젝트 내부의 폴더 중에서 접근 가능한 폴더들을 표시해주며,
우리는 윈도우 탐색기처럼 이 창을 통해서 여러 리소스들에 접근하고 사용을 할 수 있다.

 

 

유니티 에셋 폴더에 추가된 에셋

 

3. 지형 만들기

앞서 추가한 에셋을 유니티 프로젝트에서 확인해보자.

아래의 경로에서 지형 파일을 확인할 수 있으며, 우리가 사용하기 쉽게 이미 타일 팔레트로 설정되어 있다.

Assets > Cainos > Pixel Art Platformer - Village Props  > Tileset Palette > TP Ground

 

지형 타일 팔레트

 

그리고 이 타일 팔레트의 원본 이미지는 아래 경로에서 확인할 수 있다.

Assets > Cainos > Pixel Art Platformer - Village Props > Texture

※ 이미지 파일을 토대로 타일 팔레트를 추가하는 방법은 다른 포스팅에서 기재하도록 하겠다.

 

지형 타일 팔레트의 원본 이미지와 생성된 타일들

 

이제 지형을 만들어보자.

유니티 프로젝트의 Hierarchy 윈도우에서 다음과 같은 순서대로 메뉴를 선택해서 사각형의 타일맵을 생성하자.

2D Object > Tilemap > Rectangular

 

유니티에서 Scene는 하나의 장면 또는 맵이라고 할 수 있다.
그리고 이러한 Scene을 기반으로 게임을 개발하고 진행하게 된다.
예를 들면, 스테이지1에서 스테이지2로 이동한다는 것은 Stage1Scene에서 Stage2Scene로 전환되는 것을 의미한다.
Hierarchy 윈도우
는 이러한 Scene의 구성 요소들에 접근하고 설정할 수 있는 창이다.

 

 

2D 타일맵 생성 메뉴

 

2D 타일맵을 생성하면, Scene 윈도우에 네모난 격자들이 생긴다.

지형을 생성하기 위해서 오른쪽 하단의 Open Tile Palette를 클릭하자.

 

2D 지형을 만들기 위한 격자 표시

 

Open Tile Palette를 클릭하면, 아래처럼 타일 팔레트가 노출된다.

그리고 붓 모양의 브러쉬를 선택 후, 원하는 타일을 선택하면 지형을 생성할 준비가 완료된다.

Scene 윈도우에 선택한 타일을 그려보자.

그냥 원하는 위치에 마우스 커서를 올리고 클릭하면 된다.

 

타일 팔레트와 타일 팔레트에서 브러쉬와 타일을 선택한 모습

 

아래는 내가 임의로 지형을 생성한 모습이다.

타일을 하나씩 찍어도 되고, 한번에 여러 타일을 그릴 수도 있다.

자신의 상황에 맞게 효율적으로 지형을 생성해보자.

 

지형 생성 과정

 

Play 버튼을 클릭해서 Scene을 실행하면 생성한 지형이 어떻게 그려지는지 확인할 수 있다.

Play 버튼은 Scene 상단에 있는 ▷ 모양의 버튼이다.

 

타일로 생성한 지형이 게임 화면에서 실제로 보여지는 모습

 

타일을 더 찍어서 지형을 추가로 생성해보았다.

그리고 아래 화면에서 하얀색의 네모난 영역이 카메라로 표시할 수 있는 영역이다.

추가로 생성한 지형의 일부가 카메라의 영역을 벗어난 것으로 보인다.

그러면 영역을 벗어난 지형은 어떻게 될까?

 

카메라를 벗어난 지형 (예시)

 

Scene을 실행하면 아래처럼 카메라 영역을 벗어난 지형은 안보이는 것을 알 수 있다.

그리고 영역 밖의 지형을 보고싶다면 카메라의 영역을 이동시켜줄 필요가 있다.

이는 다른 포스팅에서 다룰 예정이다.

 

게임 화면에서 보여지는 지형 모습 (예시)

 


개발 관련 포스팅은 오랜만에 합니다.

최대한 쉽게 이해할 수 있게 작성하려고 노력했는데, 글을 보신 분들은 어떻게 생각하실지 모르겠네요.

이 글이 도움이 되었다면 댓글을 남겨주세요.

또한, 수정이 필요한 부분이나 개선점 같은 내용도 댓글로 남겨주시면 여러모로 도움이 될 것 같습니다.

반응형
반응형

게임을 개발하기 위해서는 여러가지 방법들이 있겠지만, 역시 엔진을 사용하는 것이 여러모로 편할 것이다.

그리고 나는 언리얼 엔진을 제외하고 여러 게임 엔진들을 사용해봤다.

2D, 3D 게임 개발이 모두 가능한 유니티 엔진과는 다르게, 어떤 엔진은 2D 게임만 개발할 수 있었다.

처음 내가 유니티를 알고 사용했을 때는 한국에 유니티가 들어온지 얼마 안된 시점이었다.

그리고 내 시간이 꽤 흐른만큼 유니티도 많은 변화가 생긴 것 같다.

특히, 이번에 유니티를 설치해보니 설치 방법이 새로워졌다는 것을 알게되었다.

내가 마지막으로 유니티 엔진을 사용했을 때는 단순하게 설치 파일만 다운로드 받아서 설치했었다.

그러나 이제는 Unity Hub를 통해서 유니티를 설치하고 있다는 것을 이번에 알게되었다.

그리고 내가 이번에 유니티를 설치했던 과정을 아래에 정리하였다.

5번의 시도 끝에 유니티를 설치할 수 있었기 때문에 기록할 필요가 있었다.

 

1. Unity Hub 설치

우선, Unity Hub 설치 파일을 다운로드 하자.

https://unity.com/kr/developer-tools

 

개발자 툴 | Unity

여러분과 여러분의 프로젝트를 지원하기 위한 툴(기술 자료, Knowledge Base, 이슈 트래커 등)이 마련되어 있습니다.

unity.com

 

위의 링크를 클릭하면 원하는 화면으로 이동할 수 있으며, 아래와 같은 패널이 보일 것이다.

 

 

그리고, 위의 패널을 클릭하면 아래와 같은 화면으로 이동한다.

아래 화면에서 시작하기 버튼을 클릭하면 약관 확인 후에 Unity Hub 설치 파일을 다운로드 받을 수 있다.

 

 

약관을 읽어보면, 유니티 설치 시 Personal 또는 학생용 플랜을 사용할 수 있다는 것을 알 수 있다.

또한, Personal 플랜의 이용 조건도 함께 표시되어 있다.

나는 현재 게임 개발로 인한 수익, 자본금, 투자금이 없기 때문에 Personal 플랜을 이용할 수 있다.

물론, 추후 발생하는 수익이 이용 조건을 오버하는 경우에는 다른 플랜으로 변경해야 되는 것으로 알고있다.

그리고 다른 플랜에 대한 정보가 궁금하다면 아래 링크를 참고하면 된다.

https://store.unity.com/kr

 

 

약관 동의 후 Unity Hub를 다운로드 받으면 아래의 이미지 순서대로 간단하게 설치할 수 있다.

 

 

2. Unity Hub로 유니티 자동 설치

유니티를 설치하기 위해서 Unity Hub를 실행하면 아래처럼 windows 보안 경고창이 노출된다.

대부분 집, 학교, 회사에서 사용할테니 액세스 허용을 클릭하면 된다.

 

 

보안 경고 창이 사라지면, 유니티를 설치할 경로를 선택할 수 있다.

그러나 기본적으로 설정되어 있는 경로에 설치하는게 편하기 때문에 설치 버튼을 클릭하면 된다.

그러면 Unity ID를 만들 수 있는 화면이 나온다.

 

 

나는 모든 쿠키를 허용해준 후에 구글 계정으로 Unity ID를 만들었다.

Unity ID는 개인 계정으로 만들 수도 있지만, 아래 링크에서 Unity ID에 대한 설명을 보았기 때문에 급하게 새로운 구글 계정을 만들어서 사용했다.

프로젝트가 하나의 Unity ID 조직에 속한다면 업무용 계정이 필요할 것 같았다.

덕분에 그동안 고민하던 회사 이름도 확정 지을 수 있었다.

 

Unity 프로젝트란 무엇인가요?
프로젝트는 하나의 Unity ID 조직에 속하게 됩니다. Unity 프로젝트는 해당 조직의 Unity 서비스에 액세스할 수 있으며, Unity를 통해 다른 사용자에게 공유되고 함께 관리될 수 있습니다. (중략...)

출처: https://unity3d.com/kr/unity/faq/4439

 

Unity ID를 생성한 후에는 마이크로게임 선택 화면으로 변경되며, 개발하고 싶은 게임을 선택하면 된다.

참고로 경고창이 하나 노출되는데, 레고 마이크로게임을 개발하지 않는다면 가볍게 무시해주면 된다.

나는 그동안 유니티로 2D 게임을 만들어 본 경험이 없기 때문에 플랫폼 게임을 선택했다.

그리고 프로젝트 이름은 기존에 입력된 것을 그대로 사용했다.

프로젝트 이름을 고민하느라 시간을 허비할 것 같았기 때문이다.

 

사실, 나는 마이크로게임을 선택하는 화면에서 이미 한번 설치를 실패했었다.

그 때는 플랫폼 게임을 선택만 한 상태로, 메일 확인 및 블로그에 등록한 사진을 정리하고 있었다.

그러던 중 유니티 설치를 실패했다는 경고창이 노출되면서 Unity Hub를 처음 실행했을 때 단계로 화면이 바뀌었다.

그래서 앞의 단계들을 다시 거치면서 Unity 시작 단계까지 도달하게 되었다.

그리고 여기서부터 오늘의 유니티 설치 과정이 꼬인 것 같다.

처음에는 하단의 로딩 바가 채워지면서 유니티가 제대로 다운로드 되는 것 같았다.

그러나, 한참을 기다려도 99%에서 변화가 없었다.

그런데 제어판에서 설치된 프로그램 목록에는 유니티가 있었다.

그래서 잘못 설치된 것으로 추정되는 유니티 프로그램을 삭제하고 Unity Hub를 다시 실행시켰다.

나는 결국 유니티를 수동으로 설치하기로 했다.

 

 

3. Unity Hub에서 유니티 수동 설치

유니티 수동 설치는 설치 마법사 건너뛰기를 선택하면 된다.

나는 설치 마법사 단계를 패스하고 설치 화면을 선택했다.

설치된 버전이 없기 때문에 당연히 "설치된 Unity 버전이 없습니다"라는 문구가 보인다.

 

 

그리고 나는 아래처럼 권장된 버전으로 그냥 설치했지만, 설치가 실패한건지 경고창도 노출되지 않은 상태에서 위의 설치 화면을 다시 보게 되었다.

그 후에는 Unity 2021.1.13f1 버전을 선택해서 다시 설치 과정을 진행했다.

 

 

그래도 또 다시 설치는 실패하고, 나는 설치 화면을 다시 볼 수 밖에 없었다.

그리고 설치는 제대로 되었는데 표시가 안되는건 아닐까 싶은 생각이 들었다.

그래서 검색 버튼을 클릭해서 설치된 유니티 에디터를 확인하려고 했지만 찾을 수 없었다.

왜냐하면, 설치 경로를 몰라서가 아니라 설치 경로에는 .exe 확장자를 가진 실행 파일이 없었다.

4번째 시도한 유니티 설치도 역시나 실패했다.

그리고 마지막으로 5번째 시도가 실패하면 내일 다시 시도할 생각이었다.

 

일단, 나는 컴퓨터를 재부팅한 후에 유니티 설치 폴더를 깨끗하게 지웠다.

그래서 C:\Program Files 경로에 유니티와 관련된 폴더는 Unity Hub만 남았다.

PC의 메모리 부족으로 인해서 유니티 설치가 실패하고, 남아있던 쓰레기 파일들 때문에 4번째 시도까지 실패했을 거라는 생각 때문이었다.

생각이 맞았는지 Unity 2021.1.13f1 버전을 다시 설치했는데, 이번에는 노출되는 화면들이 달랐다.

일단, Microsoft Visual Studio Community 2019 설치 화면이 나왔으며, 설치가 진행되었다.

그리고 일련의 과정들이 끝난 이후에는 설치 화면에 Unity 2021.1.13f1 버전이 노출되었다.

사소하지만, 5번째 시도 끝에 성공할 수 있어서 감사한 순간이었다.

참고로 아직 설치된 버전을 확인해보지는 않았다.

이건 내일 해볼 생각인데, 분명히 정상적으로 유니티가 실행될 것 같다.

 

반응형

+ Recent posts