UnReal 9

[Unreal] 애니메이션 인트로 이번 글에서는 ThirdPersonCharacter에 여러 가지 애니메이션을 적용해 보도록 하겠다. TPS 총 게임 구현 과정에서 애니메이션을 입히는 부분을 떼어와서 정리하는 것인데 나중에 애니메이션을 적용하는 경우에 참고용으로 작성한다. 애니메이션 적용 애셋 가져오기 우선 애니메이션 애셋을 마켓플레이스에서 '애니메이션 스타터 팩'을 검색하여 프로젝트에 추가한다. 이 에셋은 에픽게임즈에서 제공하는 무료 에셋인데 다양한 모션들이 제공되고 있다. 애니메이션 적용을 위해서는 다운로드한 폴더에 있는 Skeletal Mesh로 교체해 주어야 한다. 현재 BP_TPSPlayer라는 플레이어 블루프린트가 존재하므로 블루프린트를 더블클릭하여 디테일 창 -> Mesh 탭에 Skeletal Mesh를 교체해 준다... 개발/Unreal 2023. 4. 17.
[Unreal] 월드 안에 이름을 포함한 액터 모두 찾기 인트로 언리얼에서는 월드 안에서 원하는 타입의 오브젝트, 액터를 찾을 수 있는 기법을 제공한다. Iterator를 활용하는 방법과 GetAllActorsOfClass를 활용하는 방법이 있는데 GetAllActorsOfClass를 이용하여 찾는 방법을 소개하겠다. 아래 예제에서 이 기법을 활용할 상황은 월드 안의 여러 개의 몬스터 스폰 지점을 따로 지정하지 않고 한번에 관리하기 위해 스폰 지점을 다 찾는 상황에서 GetAllActorsOfClass를 활용할 것이다. GetAllActorsOfClass 맵 곳곳에 배치된 적 스폰지점 BP_EnemySpawnPoint 5개를 찾아서 EnemyManager에 자동으로 등록해 줄 것이다. 이렇게 하면 일일이 등록해야 하는 번거로운 작업이 줄어들어 편의성이 높아진다.. 개발/Unreal 2023. 4. 11.
[Unreal] 자습서 7장 - 블루프린트로 슈팅게임 만들기(4) 인트로 이번 장에서는 마무리로 점수를 출력하고 게임 오버 화면 UI를 만들어 볼 것이다. 점수 UI 제작 언리얼 엔진에서는 '언리얼 모션 그래픽 UI 디자이너(UMG)'라는 UI 제작 툴을 제공하고 있다. UMG는 '위젯(Widget)'이라는 블루프린트를 사용해서 UI 레이아웃을 제작할 수 있기 때문에 기능 구현이나 레이아웃 설정이 편하다. 점수 누적 함수 생성 우선 점수를 누적시킬 함수부터 생성하도록 하겠다. BP_GameModeBase로 들어가서 AddScore 함수를 추가한다. 함수의 Input으로 Point라는 정수형 매개변수를 추가해 준다. 현재 점수를 저장할 CurrentScore 정수형 변수도 하나 추가해 준다. 입력받은 점수를 현재 점수에 더하기 위해 아래와 같이 코드를 작성한다. 다음으로.. 개발/Unreal 2023. 3. 30.
[Unreal] 자습서 6장 - 블루프린트로 슈팅게임 만들기(3) 인트로 이번 장에서는 게임 배경과 외부 모델링을 적용시켜 보도록 하겠다. 배경 적용 우주 배경을 적용하기 위해 적절한 우주 배경 이미지를 하나 다운로드하여서 프로젝트에 임포트 해준다. 임포트 한 파일은 이미지이기 때문에 3D 모델링에 부착할 머티리얼로 만들어 줘야 한다. 머티리얼을 하나 새로 생성해 준 뒤 이미지를 끌어와서 연결해 준다. 최종적인 배경 머티리얼 창의 모습은 위의 사진과 같은 화면인데 플레이어가 앞으로 날아가는 효과를 내기 위해서 배경을 아래쪽으로 내리기 위해 [Panner] 노드를 추가한 후 Speed Y 값을 -0.1로 지정해 주었다. 이렇게 하면 배경 이미지가 아래로 스크롤되는 효과를 낼 수 있다. 아래는 배경 적용 후 게임 플레이 화면이다. 외부 모델링 이번에는 플레이어와 적에게 모.. 개발/Unreal 2023. 3. 27.
[Unreal] 자습서 5장 - 블루프린트로 슈팅게임 만들기(2) 인트로 이번 장에서는 적을 생성하고 적, 총알, 플레이어 간의 충돌 처리도 구현할 것이다. 완성 후 실행화면은 아래와 같다. 적(Enemy) 제작하기 적 액터 제작 우선 적 역할을 할 BP_Enemy 블루프린트를 액터를 상속받아 만들어준다. 적도 우선은 큐브 형태로 표현하겠다. 적은 생성이 되면 아래로 내려간다. 플레이어보다 빠르게 이동속도 변수에 800을 주고 총알에서 구현한 코드와 똑같이 코드를 작성하면 된다. 적 공장 액터 제작 적들은 계속 일정한 시간 간격으로 생성이 되어야 한다. 이 공장 역할을 할 BP_EnemyFactory 블루프린트 클래스를 액터를 상속받아 생성한다. BP_EnemyFactory는 생성하는 역할만 하기 때문에 눈에 보일 필요가 없으므로 따로 외형 컴포넌트는 추가하지 않는다... 개발/Unreal 2023. 3. 22.
[Unreal] 자습서 4장 - 블루프린트로 슈팅게임 만들기(1) 이제 본격적으로 2D 비행기 슈팅 게임 만들기 실습을 진행해 보겠다. 2D 환경으로 제작하는 것은 아니고 카메라 배치를 단편적으로 해서 2D 게임처럼 보이게 하는 것이다. 실습에 앞서 우선 새 프로젝트를 만들어준다. 새 프로젝트 생성 언리얼 엔진을 실행하고 Games -> Blank -> With Starter Content 선택 -> Ctrl + N -> Empty level 템플릿 순으로 선택하여 프로젝트를 생성해 준다. 다음으로는 블루프린트 클래스를 생성하여 Game Mode Base 클래스를 상속받도록 한다. Game Mode Base 클래스는 플레이어 캐릭터의 생성 및 생성 위치, 멀티 플레이 세션 관리 및 참가 인원 관리 등등 각종 기본 클래스들을 지정해 주는 역할을 하면서 게임의 승리 조건이.. 개발/Unreal 2023. 3. 20.
[Unreal] 자습서 3장 - 제어문(Blueprint) 이번에는 중요한 개념인 조건문과, 반복문에 대해서 블루프린트로 예제를 수행해보겠다. 조건문 조건문은 if~else 와 같은 개념인데 블루프린트에서는 [Branch] 노드를 이용하여 조건문을 수행한다. 두 수를 비교하여 더 큰 값이 무엇인지 출력해주는 예제를 만들어 보겠다. 우선 Num0 과 Num1을 배치한 후 [integer > integer] 노드에 연결시켜준다. 그 후, [Branch] 노드를 생성한다. 대소 비교 결과값을 [Branch] 노드의 condition에 연결시켜준다. [Branch] 노드는 입력된 조건 값이 참인지 거짓인지에 따라 다른 함수 노드를 실행할 수 있도록 만들어진 흐름 제어 노드이다. Branch 노드의 실행 핀을 [BeginPlay]와 연결하고 True 핀과 False 핀 .. 개발/Unreal 2023. 3. 17.
[Unreal] 자습서 2장 - 블루프린트 비주얼 스크립팅 코드를 작성하는 것이 아닌 특정 기능을 담은 코드 블록을 마우스 드래그 앤 드롭으로 조립하는 시각적 인터페이스를 이용한 코딩 방식을 '비주얼 스크립팅' 이라고 한다. 언리얼 엔진은 코딩에 익숙하지 않은 기획자나 아티스트들이 간단하게 기능을 구현할 수 있도록 비주얼 스크립팅 방식의 '블루프린트' 기능을 제공하고 있다. 특히 언리얼 엔진의 블루프린트는 일반적인 블록 코딩보다도 더욱 코딩 관련 기능을 많이 제공하고 있어서 직접적인 코딩 없이 블루프린트만으로도 어느 정도 규모의 프로젝트는 거뜬히 제작할 수 있다고 한다. 사실 C++을 이용한 언리얼 엔진 개발을 공부하고 싶었지만 지금은 우선 블루프린트를 통해 언리얼과 친해진 후 차차 C++ 공부를 해 볼 생각이다. 블루프린트 클래스 생성 이제 블.. 개발/Unreal 2023. 3. 17.
[Unreal] 언리얼 엔진 설치하기 https://www.unrealengine.com/ko 언리얼 엔진 | 가장 강력한 리얼타임 3D 제작 플랫폼 언리얼 엔진은 세계에서 가장 개방되고 진보된 리얼타임 3D 제작 플랫폼으로서 포토리얼한 비주얼과 몰입감 있는 경험을 제공합니다. www.unrealengine.com 언리얼 엔진을 사용하려면 가장 먼저 언리얼 엔진 홈페이지에서 회원 가입을 하고, 에픽게임즈 런처 설치 후 런처를 통해 언리얼 엔진을 설치해야 한다. 위 링크로 들어가면 '로그인' 과 '다운로드' 버튼이 있는데 계정이 없는 경우에는 로그인 버튼을 눌러 회원가입을 진행하면 된다. 회원가입이 완료되었으면 다운로드 버튼을 클릭한다. 아래 사진과 같은 순서대로 설치를 진행하면 된다. 에픽게임즈 런처를 실행하면 아래와 같은 화면이 나오는데,.. 개발/Unreal 2023. 3. 13.