반응형

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

 

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 컨트롤러가 선택된 모습

 

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

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

 

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

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

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

반응형

+ Recent posts