[Unreal] 자습서 5장 - 블루프린트로 슈팅게임 만들기(2)
·
개발/Unreal
인트로이번 장에서는 적을 생성하고 적, 총알, 플레이어 간의 충돌 처리도 구현할 것이다. 완성 후 실행화면은 아래와 같다. 적(Enemy) 제작하기적 액터 제작우선 적 역할을 할 BP_Enemy 블루프린트를 액터를 상속받아 만들어준다. 적도 우선은 큐브 형태로 표현하겠다. 적은 생성이 되면 아래로 내려간다. 플레이어보다 빠르게 이동속도 변수에 800을 주고 총알에서 구현한 코드와 똑같이 코드를 작성하면 된다. 적 공장 액터 제작적들은 계속 일정한 시간 간격으로 생성이 되어야 한다. 이 공장 역할을 할 BP_EnemyFactory 블루프린트 클래스를 액터를 상속받아 생성한다. BP_EnemyFactory는 생성하는 역할만 하기 때문에 눈에 보일 필요가 없으므로 따로 외형 컴포넌트는 추가하지 않는다..
벡터의 정규화(Normalization)
·
개발
정규화 어떤 대상을 일정한 규칙이나 기준에 따르는 정규적인 상태로 바꾸거나 비정상적인 대상을 정상적으로 돌리는 과정 벡터의 정규화 게임 개발을 할 때 보통 플레이어의 이동은 WASD 키를 이용하여 구현한다. W키를 입력하면 수직 입력 값을 1로 받고, S는 -1, D를 입력하면 수평 입력 값을 1로 받고, A는 -1로 받는다. 이렇게 입력 받은 이동 방향에 이동 속도를 곱하여 이동을 구현하는 것이다. 그런데 대각선 방향으로 방향키를 입력하면 (W+A, W+D, S+A, S+D) 수직 벡터와 수평 벡터가 더해져서 대각선 방향의 벡터가 생성된다. 이 대각선 벡터의 길이는 피타고라스의 정리에 의해 루트 2 (약 1.4)임을 알 수 있다. 이렇게 되면 대각선으로 이동하는 속도가 수평, 수직으로 이동할 때보다 약..
[Unreal] 자습서 4장 - 블루프린트로 슈팅게임 만들기(1)
·
개발/Unreal
이제 본격적으로 2D 비행기 슈팅 게임 만들기 실습을 진행해 보겠다. 2D 환경으로 제작하는 것은 아니고 카메라 배치를 단편적으로 해서 2D 게임처럼 보이게 하는 것이다. 실습에 앞서 우선 새 프로젝트를 만들어준다.새 프로젝트 생성언리얼 엔진을 실행하고 Games -> Blank -> With Starter Content 선택 -> Ctrl + N -> Empty level 템플릿 순으로 선택하여 프로젝트를 생성해 준다. 다음으로는 블루프린트 클래스를 생성하여 Game Mode Base 클래스를 상속받도록 한다. Game Mode Base 클래스는 플레이어 캐릭터의 생성 및 생성 위치, 멀티 플레이 세션 관리 및 참가 인원 관리 등등 각종 기본 클래스들을 지정해 주는 역할을 하면서 게임의 승리 조건이나 ..
[Unreal] 자습서 3장 - 제어문(Blueprint)
·
개발/Unreal
이번에는 중요한 개념인 조건문과, 반복문에 대해서 블루프린트로 예제를 수행해보겠다. 조건문조건문은 if~else 와 같은 개념인데 블루프린트에서는 [Branch] 노드를 이용하여 조건문을 수행한다. 두 수를 비교하여 더 큰 값이 무엇인지 출력해주는 예제를 만들어 보겠다. 우선 Num0 과 Num1을 배치한 후 [integer > integer] 노드에 연결시켜준다. 그 후, [Branch] 노드를 생성한다. 대소 비교 결과값을 [Branch] 노드의 condition에 연결시켜준다.[Branch] 노드는 입력된 조건 값이 참인지 거짓인지에 따라 다른 함수 노드를 실행할 수 있도록 만들어진 흐름 제어 노드이다. Branch 노드의 실행 핀을 [BeginPlay]와 연결하고 True 핀과 False 핀 모..
[Unreal] 자습서 2장 - 블루프린트
·
개발/Unreal
비주얼 스크립팅코드를 작성하는 것이 아닌 특정 기능을 담은 코드 블록을 마우스 드래그 앤 드롭으로 조립하는 시각적 인터페이스를 이용한 코딩 방식을 '비주얼 스크립팅' 이라고 한다. 언리얼 엔진은 코딩에 익숙하지 않은 기획자나 아티스트들이 간단하게 기능을 구현할 수 있도록 비주얼 스크립팅 방식의 '블루프린트' 기능을 제공하고 있다. 특히 언리얼 엔진의 블루프린트는 일반적인 블록 코딩보다도 더욱 코딩 관련 기능을 많이 제공하고 있어서 직접적인 코딩 없이 블루프린트만으로도 어느 정도 규모의 프로젝트는 거뜬히 제작할 수 있다고 한다. 사실 C++을 이용한 언리얼 엔진 개발을 공부하고 싶었지만 지금은 우선 블루프린트를 통해 언리얼과 친해진 후 차차 C++ 공부를 해 볼 생각이다. 블루프린트 클래스 생성이제 블루..
[Unreal] 자습서 1장 - 언리얼 시작하기
·
개발/Unreal
이번 언리얼 자습에서는 '인생 언리얼 교과서' 교재를 바탕으로 자습을 진행할 것이다. 교재 진도를 따라 실습을 진행해보자.프로젝트 생성 런처에서 다운받은 4.27 엔진을 실행하면 아래 그림과 같이 프로젝트를 선택 또는 새 프로젝트를 만들 수 있는 창이 나타난다. 카테고리에서 'Games'을 선택하고 [Next] 버튼을 누른다. 템플릿 창에서 기본 상태인 'Blank'를 선택하고 [Next] 클릭. 템플릿을 선택했으면, 개발하는 프로젝트의 내부 설정에 대한 창이 나오게 된다. 여기에서는 프로젝트의 품질/성능 수준, 대상 플랫폼, 시작용 콘텐츠 여부 등을 선택할 수 있다. 학습을 위한 예시가 필요하므로 'No Starter Content'를 눌러 'With Starter Content'로 바꿔주고 프로젝..
[Unreal] 언리얼 엔진 설치하기
·
개발/Unreal
https://www.unrealengine.com/ko 언리얼 엔진 | 가장 강력한 리얼타임 3D 제작 플랫폼 언리얼 엔진은 세계에서 가장 개방되고 진보된 리얼타임 3D 제작 플랫폼으로서 포토리얼한 비주얼과 몰입감 있는 경험을 제공합니다. www.unrealengine.com 언리얼 엔진을 사용하려면 가장 먼저 언리얼 엔진 홈페이지에서 회원 가입을 하고, 에픽게임즈 런처 설치 후 런처를 통해 언리얼 엔진을 설치해야 한다. 위 링크로 들어가면 '로그인' 과 '다운로드' 버튼이 있는데 계정이 없는 경우에는 로그인 버튼을 눌러 회원가입을 진행하면 된다. 회원가입이 완료되었으면 다운로드 버튼을 클릭한다. 아래 사진과 같은 순서대로 설치를 진행하면 된다. 에픽게임즈 런처를 실행하면 아래와 같은 화면이 나오는데,..
[Unity3D] 마우스 좌표에 미사일 투하
·
개발/Unity
Unity 3D 에서 버튼을 클릭하면 마우스 좌표를 따라다니는 과녁이 생성되고, 마우스 클릭 시 좌표 지점에 미사일 오브젝트가 떨어지는 기능을 구현해 보겠다. 이 기능은 현재 진행중인 디펜스 게임 프로젝트에서 추가 기능으로 넣으려고 직접 구현해 본 기능이다. 우선 Plane 과 Quad 를 생성해 준 뒤, Quad를 x축 방향으로 90도 회전시켜서 바닥과 평행하게 만들어주고 적당한 과녁 이미지를 넣어준다. 이미지 투명 처리를 하지 못해서 배경과 바닥 색을 똑같게 하여 과녁만 보이는 것 같이 꼼수를 부렸다. ㅎㅎ 그 후 미사일 역할을 할 캡슐 하나를 생성해 주고, Collider의 Is Trigger를 체크해준후, Rigidbody를 추가해주었다. 충돌을 감지하기 위해서는 충돌을 일으키는 양쪽 게임오브젝..
[Unity3D] 슈팅 게임 제작 7장 - 적 공격, 사망 이벤트
·
개발/Unity
'절대 강좌 유니티' 를 바탕으로 실습한 내용을 담았습니다. 이번 장에서는 몬스터와 플레이어에게 hp를 부여하고 서로의 공격과 사망 이벤트를 구현할 것이다. 적의 공격 능력전 장에서 몬스터가 플레이어와 일정 거리 이내로 좁혀짐녀 공격 애니메이션을 수행하는 로직을 구현했다. 이제 실제로 데미지를 입혀야 하는데, 주인공에게 데미지를 입히는 방법은 1. 물리적인 타격, 2. 공격 주기의 수치상의 데미지 이렇게 두 가지 방식이 있다. 첫 번째 방식인 물리적인 타격을 통해 데미지를 입히는 방식으로 구현을 해보도록 하겠다. 물리적인 충돌을 발생시키기 위해 몬스터의 양쪽 손에 Sphere Collider와 Rigidbody를 추가해주고 Collider의 Is Trigger 속성에 체크해 몸체에 있는 Capsule ..
[Unity3D] 슈팅 게임 제작 6장 - 적 캐릭터 구현
·
개발/Unity
'절대 강좌 유니티' 를 바탕으로 실습한 내용을 담았습니다. 적 캐릭터는 자신만의 인공지능을 가지고 있어 게임 속 플레이어와 유기적인 플레이를 할 수 있게 제작해야 한다. 유한 상태 머신(FSM)유한 상태 머신은 NPC의 인공지능을 구현하는 방식 중 하나로, 적 캐릭터가 스스로 알아서 주변 환경에 적응하거나 들어오는 반응에 적절하게 반작용하도록 구현한 것을 말한다. 적이 스폰되고, 일정 범위를 순찰하다가 플레이어를 추적하고 사정거리 이내에 근접하면 공격하는 것과 같은 구조를 상태 머신이라고 하는데, 몬스터가 사망하고 소멸하는 구조이기에 상태가 유한해서 '유한 상태 머신' 이라고 부른다. FSM의 단점은 상태가 많아질수록 상태와 상태간의 연결이 복잡해지고 코드의 확장과 유지 보수가 어려워지는 것이다. 메카..
[Unity3D] 슈팅 게임 제작 5장 - 코루틴, 오디오
·
개발/Unity
'절대 강좌 유니티' 를 바탕으로 실습한 내용을 담았습니다. Barrel이번 장에서는 장애물 역할로써 총알이 3발 맞으면 터지는 드럼통과 오디오 등을 구현해 보았다. 리소스는 에셋 스토어의 "Barrel" 을 사용하였다. Barrel 에도 총알이 맞으면 스파크 효과가 나야하고 총알이 사라져야 하기 때문에 Wall에 적용하였던 스크립트를 그대로 적용시켜 준다.또한 총알에 3회 피격되면 폭발하는 동작을 하기 위해 스크립트를 하나 추가해 주었다. 이 스크립트에서는 드럼통을 폭발시킬 함수인 ExpBarrel() 함수를 새로 만들어 폭발효과 파티클을 생성해주고 드럼통에 Y 방향으로 힘을 강하게 주어 위로 솟구치게 하고 드럼통을 제거해주었다.// 드럼통 폭파 함수 void ExpBarrel() { ..
[Unity3D] 슈팅 게임 제작 4장 - 총 발사 로직(Mac)
·
개발/Unity
'절대 강좌 유니티' 를 바탕으로 실습한 내용을 담았습니다. 이번 장에서는 총알 발사 기능을 구현하고 충돌 처리 방법을 알아볼 것이다.게임에서 총기류 발사는 크게 두 가지 방식이 있는데 Projectile 방식과 RayCasting 방식이다.Projectile 방식 : 총알이 물리적으로 발사되어 직접 날아가 적에게 타격을 입히는 방식Raycasting 방식 : 레이저 빔과 같은 눈에 보이지 않는 광선을 발사해 적 또는 물체를 검출하는 방식(발사와 동시에 피격).이번 장에서는 Projectile 방식으로 우선 구현하겠다. 총알 모델 삽입우선 리소스에서 총알 모델을 추가해주고 빈 오브젝트에 자식으로 넣은 뒤 각도를 알맞게 적용해준다. 그 후 총알을 직선 방향으로 나아가게 하는 스크립트를 작성하여 Bullet..
[Unity3D] 슈팅 게임 제작 3장 - 캐릭터 제작(Mac)
·
개발/Unity
'절대 강좌 유니티' 를 바탕으로 실습한 내용을 담았습니다. 이번 장에서는 플레이어 캐릭터를 제작하고 C# 스크립트를 작성하여 이동 로직을 구현할 것이다. 우선 다운받은 Player 게임오브젝트를 하이러키 뷰로 드래그하여 배치한다. 이제 스크립트를 작성하여 이동을 구현할 것인데 유니티는 C# 언어를 지원하기 때문에 visual studio 와 visual studio code를 이용할 수 있다. 필자는 vscode를 이용하여 해보고 싶었지만, 자동완성이 안되고 monosharp 오류 등 이상한 문제가 계속 생겨 머리가 아파져서 그냥 visual studio for mac 을 쓰기로 하였다. (윈도우는 visual studio 2019) 코드 에디터를 선택하였으면 Unity 설정에서도 변경을 해주어야 하는..
[Unity3D] 슈팅 게임 제작 2장 - 게임 스테이지 제작(Mac)
·
개발/Unity
'절대 강좌 유니티' 를 바탕으로 실습한 내용을 담았습니다. 이번 자습에서 실습할 내용은 3인칭 시점 슈팅 게임 개발이다. 프로젝트 뷰는 게임 개발에 사용하는 모든 리소스가 저장되는 곳으로, 개발을 진행할수록 많은 리소스가 나열된다. 처음부터 체계적으로 관리해야 하기 때문에 종류에 따라 폴더로 분류해서 관리하기 위해 폴더를 생성해 주었다. 실습을 진행하기 위해 MADFINGER Games 사에서 개발한 "ShadowGun:Deadzone" 캐릭터 에셋과 텍스쳐, 하늘 배경 등 여러가지 에셋들을 '에셋 스토어' 에서 다운받는다. 에셋스토어는 상단 메뉴 Window -> Asset Store에서 들어갈 수 있다. 바닥 생성 및 배치게임의 바닥을 제작하기 위하여 3D object 의 plane을 하나 생성..
[Unity3D] 슈팅 게임 제작 1장 - Unity 시작하기(Mac)
·
개발/Unity
https://unity.com/kr/download#how-get-started 다운로드지금 Unity를 다운로드하고 전 세계적으로 가장 큰 인기를 누리는 2D/3D 멀티플랫폼 경험 및 게임 제작용 개발 플랫폼을 사용하세요.unity.com허브 다운로드위 사이트에서 유니티 허브를 다운 받은 후, 라이선스를 등록하고(Personal) 에디터를 설치한다. 자세한 과정은 이미 구글에 많이 나와있으니 생략하겠다..! 필자는 23년도 2월 기준으로 LTS(장기지원) 버전인 2021.3.18f1 에디터를 설치했다. (글을 쓰는 지금 확인해 보니 3.19f1 으로 벌써 바뀌었지만 상관없다.) 프로젝트 생성프로젝트 탭에서 우측 상단에 새 프로젝트를 클릭한다.실습은 3D FPS 게임을 만들 것이기 때문에 3D로 생성..