학습내용
언리얼엔진의 블루프린트(Blueprint) 사용법 및 기능 검색방법을 익히고, 고장난 전구를 만들어 보기
Blueprint Class(Enable Input, Text, Collision)
- Content에서 폴더를 만들고 Blueprint Class - Actor 생성.
- Input Key 와 Set Visibility를 연결 할 때 Class BP에서는 안되는데 Level BP에서는 된다.
ㄴ Level은 전체를 관장하기 때문에 Input도 관장함.
ㄴ Class는 개별적인 것이기 때문에 모든 Key Input을 받으면 과부하가 걸릴 수 있기 때문. - Class BP에서 Input을 활성화 시키기 위해서는 'Enable Input'을 사용해야함.
- Enable Input에 누구의 Controller인지 지정을 해주어야 함. Get Player Controller를 추가해야함.
- Get Player Controller의 Player Index 0번은 각자 자신의 컴퓨터 번호.
- Collision Box Event를 활용하여 가까이 갔을 때만 Input Key가 작동할 수 있도록 만들 수 있음.
- Add Component에서 Text Render를 선택하여 추가.
- Text 컴포넌트의 Text, Horizontal 등을 수정하여 위치 정해주기.
- 캐릭터가 가까이 가면 텍스트가 등장하고 멀어지면 사라지는 방법도 설정 가능
Blueprint의 요소(중요)
- Event(이벤트) : '~할 때'로 해석 조건, 모든 노드의 시작점, 노드를 받지 않음, 빨간색
- Function(함수, 명령어) : '~하라'로 해석, 파란색
- Reference(참조) : '~를/을'로 해석 (주로 함수(명령어)를 실행할 대상을 지칭)
- Variable(변수) : '~만큼' (주로 숫자를 통해서 양을 표시)
Varialbe(변수)
- Boolean : 참, 거짓을 나타내는 타입
- 변수는 초기값을 설정해주어야 하며 Default Value 필드에서 입력. 컴파일 해줘야 값 입력 가능.
- 좌측에서 MyVar를 Event Graph에 끌어오면 Get MyVar, Set MyVar가 뜸.
- Get~ : 프로그래밍 언어에서 그 변수 안에 있는 값을 내가 쓰겠다.
- Set~ : 프로그래밍 언어에서 그 변수안에 있는 값을 내가 설정하겠다.
- Default 값에서 체크를 하면 True가 출력, 체크 해제하면 False가 출력
- Integer : 정수 타입
- Set MyVar를 선택할 경우 MyVar 변수를 수정할 수 있음.
- 정수 변수에서 노드를 뺄 경우, 연산이 가능한 기능(int + int, int - int 등)을 뽑을 수 있음.
- 화면에 1초마다 숫자가 감소하는 숫자 출력하기. Print String, Delay, My Var 활용.
Destrutible Mesh
- Edit-Plugins에서 Apex Destruction을 검색하여 활성화.
- Content Browser에서 Static Mesh 우클릭하여 Create Destructible Mesh 선택.
- 각 값을 설정해주고 Fracture Mesh 클릭하며 조각이 나뉘어짐.
- Enable Impact Damage 클릭.
- Save 후 Content Browser 확인하면 이름 뒤에 DM(Destructible Mesh)이 붙은 Static Mesh 생성.
- DM이 붙은 Mesh를 넣고 Play 후 부딪히면 조각이 남.
- Detail 창에서 Simulate Phsics 체크하면 공중에서 떨어졌을 때 부서지도록 만들 수 있음.
If문(조건문)
- 언리얼에서는 Branch가 if문.
- condition에 들거나느 값이 참이면 True, 거짓이면 False.
시한폭탄 만들기
- Class BP - Actor 생성.
- 좀 전에 만들었던 Destructible Mesh를 추가.(Add Componet에서 Desturtivble 추가, Detail 창에서 Mesh 추가)
- Destructible을 Event Graphic에 추가.
- damage 검색(Radius는 반경에 damage) 후 값 설정
- Base Damage : 얼마의 데미지를 가할 것인가?
- Hurt Origin :
ㄴ Destructible - GetWorldLocation - Hurt Origin으로 연결 - Damage Radius : 데미리를 얼마의 반경에 줄 것인가?
- Play Sound at Location - Explosion 추가하여 터지는 소리 추가.
ㄴ Destructible - GetWorldLocation에서 Location 연결. - Spawn Emitter at Location을 사용하여 불꽃을 추가하기.
ㄴ Destructible - GetWorldLocation에서 Location 연결.
ㄴ Scale 키워서 폭발 효과 키우기. - 시한폭탄을 만들기 위해 integer Variable(변수) 생성.
- 컴파일 후 Default 값을 5로 설정.
- 위해서 했던 카운트 다운을 이용하여 5부터 -1 되도록 설정.
- Branch 사용하여 시한폭탄 설정.
- Count Down - integer > integer - Condition 연결.
- Count Down이 0보다 크면 카운트 다운 변수 값을 출력.
- 그것이 아니면 Apply Radius Damage로 연결하여 폭파 진행.
- Text Render, Set Text 사용하여 카운트 다운 시각화.
- Text Render - Set Text 연결.
- Count Down - value(Set Text) 연결.
- Collision을 추가하여 바위 주변에 가면 텍스트가 등장하고 카운트 다운이 시작하도록 하기.
- Collision 컴포넌트 추가하여 On Component Begin Overlap 이벤트 생성.
- On Component Begin Overlap - Set Visibility - Set Text 연결.
- Text Render - Set Visibility(Target) 연결
- 파괴된 이후 다시 작동하지 않게 하기
- Destroy Actor를 사용하여 제거.
시한폭탄 최종본
느낀 점
점점 복잡해지기 시작했다. 아직 크게 어렵지는 않지만 게임 개발자들이 정말 대단하게 느껴진다. 고작 바위 하나를 시간에 따라 터뜨리는데 많은 요소들이 들어간다. 심지어 블루프린트가 아니였다면 어땠을까? 블루프린트를 사용하면서도 코딩의 원리? 작동방식?을 조금씩 이해하게 돼서 좋다.
기능을 배우는 것보다 내가 원하는 기능을 구현하기 위해 블루프린트에서 어떻게 검색을 해야하는지를 빨리 터득할 필요가 있다. 조금씩 감을 잡아가고 있다.
'언리얼엔진' 카테고리의 다른 글
[언리얼 엔진4] 6. Cast, Custom Event, Blue Print (0) | 2021.09.29 |
---|---|
[언리얼 엔진4] 5. Material, Texture, Add, Multiply, LI (0) | 2021.09.26 |
[언리얼 엔진4] 3. Blueprint, Class, 고장난 전등 만들기 (0) | 2021.09.15 |
[언리얼 엔진4] 2. Coillision, Cinemaitcs, Sequencer (0) | 2021.09.08 |
[언리얼 엔진4] 1. 시작하기 (0) | 2021.09.01 |
댓글