Beatchoi's Blog

List of Postings

자동으로 길찾기 - 네비게이션 메시(Navigation Mesh)
자동으로 길찾기 - 네비게이션 메시(Navigation Mesh)

네비게이션 메시 :: Navigation Mesh

스타크래프트에서 유닛을 지정된 장소로 보내게 되면 뚫려있는 길을 따라 알아서 찾아갑니다. 막혀있는 길을 돌아서 가고 갈수 없는 지형은 최대한 가까이 접근하죠.
최근 자동사냥이나 방치형 RPG 모바일 게임에서도 마찬가지입니다. 캐릭터가 알아서 NPC를 찾아가고 몬스터를 찾아 사냥을 합니다.
찾아갈때 장애물이 있으면 피해서 가고 지정된 길을 통해 최적의 길을 찾아갑니다.
유니티에서도 해당 기능을 Navigation Mesh를 통해 구현할 수 있습니다. 간단한 몬스터의 이동이나 캐릭터의 이동반경등을 지정해 봅시다.

유니티3D 에디터에서

프로젝트 생성 및 세팅

유니티 프로젝트를 생성하고 유니티 기본도형을 활용하여 기본 스테이지를 생성해 봅시다.
캐릭터가 걸어다닐 수 있는 길은 Plane오브젝트로, 장애물은 Cube, 경사로는 Plane 또는 Cube로 구현해 봅니다.
캐릭터 오브젝트 역시 Capsule로 간단하게 생성합니다.


<01. 스테이지 생성>


<02. 스테이지 생성>

유니티 코딩 기법 - 싱글톤
유니티 코딩 기법 - 싱글톤

싱글톤 :: Singleton

유니티를 이용해 콘텐츠를 개발하다보면 다른 스크립트에 있는 변수나 함수를 참조하거나 호출해야 하는 경우가 생깁니다.
처음에는 Public GameObject변수를 선언하여 호출하고자 하는 함수나 변수를 가지고있는 오브젝트를 연결시키고,
해당 오브젝트의 컴포넌트에 GetCompoent로 스크립트 컴포넌트에 접근하여 변수나 함수에 접근하실 것입니다.
대부분 이러한 불편함을 해소하기 위해서 싱글톤이라는 개념을 처음 접하게 되실겁니다.
물런 싱글톤의 주 목적이 외부에서의 참조만을 위한 것이라고 보기는 힘들지만 첫 접근을 위한 방편으로 생각하는 것도 나쁘지 않을 것 같습니다.

유니티3D 에디터에서

스크립트 생성

프로젝트 창에서 Singleton.cs 스크립트를 생성합니다.
Singleton.cs스크립트를 열어 다음과 같이 작성합니다.

콘텐츠 개발 기법 - 오브젝트 풀링(Object Pooling)
콘텐츠 개발 기법 - 오브젝트 풀링(Object Pooling)

오브젝트 풀링 :: Object Pooling

우리가 콘텐츠를 개발할때 매우 많은 수의 오브젝트를 다루는 상황에 직면하곤 합니다. FPS게임의 총알이나 매 라운드 생성되는 몬스터 같이 말이죠.
하지만 오브젝트가 필요한 매 순간마다 해당 오브젝트를 생성하고 제거하게 된다면 어플리케이션 내 과부하가 일어나게 됩니다.
오브젝트의 생성과 제거는 의외로 리소스를 많이 잡아먹는 행위이기 때문입니다.
이를 구조적으로 해결하기 위해 보통 오브젝트 풀링이라는 기법을 활용합니다.
오브젝트 풀링이란 간단하게 말해 오브젝트를 콘텐츠 시작단에 미리 필요한만큼 생성시켜놓고 보이지 않는 어딘가 숨겨놓습니다.
그리고 필요할 때마다 생성시켜놓은 오브젝트를 불러와서 활용하고 활용하고 난 뒤에는 제거하지 않고 다시 원위치 시켜놓는 것입니다.
이렇게 오브젝트를 관리하게되면 시작단에 생성시킬 때를 제외하고는 오브젝트의 생성과 제거를 진행하지 않기 때문에 효율적인 리소스 관리를 할 수 있습니다.

유니티3D 에디터에서

스크립트 생성

프로젝트 창에서 ObjectPool.cs 스크립트를 생성합니다.
오브젝트 풀링을 구현하는 ObjectPool.cs스크립트를 열어 다음과 같이 작성합니다.

캐릭터의 이동<간편> - Character Controller
캐릭터의 이동<간편> - Character Controller

캐릭터의 이동 및 회전 :: Character Controller

이전 포스트의 Character Controller 컴포넌트를 활용하여 캐릭터를 이동 스크립트를 간편하게 작성해봅니다.

유니티3D 에디터에서

스크립트 생성

프로젝트 창에서 PlayerController.cs 스크립트를 생성합니다.
PlayerController.cs스크립트를 열어 다음과 같이 작성합니다.

믹사모 캐릭터 애니메이션 활용 3 - Mixamo Character & Animation 3
믹사모 캐릭터 애니메이션 활용 3 - Mixamo Character & Animation 3

믹사모 캐릭터 및 애니메이션의 활용 3 :: Mixamo Character & Animation 3

저번 포스팅에 이어 애니메이션을 추가해보고 추가한 애니메이션들을 제어해봅니다.

Mixamo 페이지에서

애니메이션 다운로드

Mixamo.com페이지에서 애니메이션들을 추가해서 받아봅니다.
먼저 캐릭터가 가만히 있을때 재생되는 Idle 애니메이션을 다운로드 받습니다.


<01. Idle 애니메이션 다운로드>

그리고 뒤로 걸어가는 애니메이션을 다운로드 받습니다.
검색은 back walk로 합니다.


<02. Walk back 애니메이션 다운로드>

유니티 에디터에서

폴더정리

유니티 프로젝트의 Project창에서 폴더를 하나 새로 만듭니다.
애니메이션 모델링 파일을 정리할 Modelings파일을 만듭니다.


<03. Modelings 폴더 생성>

해당 폴더 안에 다운로드 받은 애니메이션 모델링 파일들과 이전에 받은 걷기 애니메이션 모델링 파일을 넣습니다.


<04. 파일 정리>

Animator Controller 수정

저번 포스팅에서 다루었던 Animator Controller파일인 Character Controller파일을 더블클릭하여 열어줍니다.
해당 컨트롤러에 방금 임포트한 뒤로걷기 및 Idle 애니메이션을 드래그하여 애니메이션 클립을 드래그 앤 드롭하여 불러와줍니다.


<05. 애니메이션 클립 불러오기>

이제 기본 상태를 변경해주어야 합니다. 현재 보이시는 오렌지색 클립이 기본 상태 클립입니다.
기본 상태 클립은 애니메이션 컨트롤러가 시작하였을때 또는 아무런 입력이 없을 때 기본으로 실행되는 상태입니다.
우리는 Idle애니메이션을 기본상태로 지정할 것입니다.
Idle 애니메이션 클립에서 마우스 오른쪽 클릭을 하고 Set as Layer Default State항목을 선택합니다.
그러면 다음과 같이 회색의 상태가 오렌지색으로 바뀌며 Entry에서의 화살표가 변경되는 것을 확인할 수 있습니다.


<06. 애니메이션 상태 변경>

이제는 애니메이션 상태 클립끼리의 방향을 지정해 주어야 합니다.
방향이란 어떠한 애니매이션 상태에서 다른 애니메이션 상태로 변경이 될 수 있도록 길을 만들어 주는 과정이라고 생각하시면 됩니다.
먼저 오렌지색 기본 Idle상태에서 마우스 오른쪽 크릭을 하여 Make Transition 항목을 클릭합니다.
그러면 마우스에 화살표가 이어지는데 이 상태에서 다른 애니메이션 상태 클립을 클릭하면 화살표가 이어지게 됩니다.
이 화살표는 Idle상태에서 이어진 상태로 변경이 가능하다 라는 의미를 가집니다. 반대도 지정해 주도록 합니다.
이렇게 각각 WalkBack Walk 애니메이션과 Idle애니메이션을 연결해 주면 됩니다.


<07. 애니메이션 상태끼리 연결>

현재 상태는 아무런 조건이 없기 때문에 Idle, Walk, Back Walk 상태 끼리 제약없이 애니메이션 변경이 가능합니다.
우리는 앞으로 가는 키를 눌렀을 때 Walk,
뒤로가는 키를 눌렀을 때 Back walk, 가만히 있을 때 Idle 애니메이션을 실행시킬 것이기 때문에 다음과 같이 조건을 지정해 줄 것입니다.

Latest Posts

Unity3D DOTS 개요 - DOTS 알아보기 2. World에 Entity 만들기
Unity3D DOTS 개요 - DOTS 알아보기 2. World에 Entity 만들기

Unity3D DOTS 개요 - DOTS 알아보기 1. ECS
Unity3D DOTS 개요 - DOTS 알아보기 1. ECS

DOTS 개요

DOTS는 Data Oriented Tech Stack의 약자로서 기본 상태에서 최적의 성능을 확보할 수 있는 전혀 다른 방식의 코드 작성 방법입니다. DOTS 방식으로 코드를 짠다면 멀티스레드 성능을 통해 더 많은 개체, 더 많은 이펙트, 더 나은 비주얼을 가진 복잡한 콘텐츠를 만들 수 있습니다.
DOTS는 Entity Component System, C# Job System, Burst Compiler 세 가지 요소로 이루어져 있습니다. 본 포스팅에서는 ECS에 대해서 알아봅니다.

유니티3D 설치
유니티3D 설치

유니티3D를 설치해봅니다.