언리얼 엔진/실습 PJT

책 따라하기 12 - 변수, 위협과 보상

VioletOokamiScythe 2025. 1. 30. 20:43
728x90

실전 게임 제작으로 배우는 언리얼 엔진 4 | 미나토 카즈히사 - 교보문고

 

실전 게임 제작으로 배우는 언리얼 엔진 4 | 미나토 카즈히사 - 교보문고

실전 게임 제작으로 배우는 언리얼 엔진 4 | [실전 게임 제작으로 배우는 언리얼 엔진 4]은 언리얼 엔진 4를 처음 시작하는 개발자를 위해 기획되었다. 실제 게임이 제작되는 순서에 맞게 챕터를

product.kyobobook.co.kr

 

2025.01.28 - [언리얼 엔진/실습 PJT] - 책 따라하기 11 - 액터 생성과 삭제

 

책 따라하기 11 - 액터 생성과 삭제

실전 게임 제작으로 배우는 언리얼 엔진 4 | 미나토 카즈히사 - 교보문고 실전 게임 제작으로 배우는 언리얼 엔진 4 | 미나토 카즈히사 - 교보문고실전 게임 제작으로 배우는 언리얼 엔진 4 | [실

violetookamiscythe.tistory.com


목차

1. 변수

2. 서브루틴


1. 변수

플레이어 캐릭터 블루프린트를 열고, 내 블루프린트 패널에서 변수를 추가한다.

 

 

코인 개수를 의미하는 인티저(정수) 변수 1개, 스크롤 소지 여부를 의미하는 부울(참/거짓) 변수 1개를 생성한다.

 

 

이벤트 그래프 빈 공간에, C키 입력 이벤트를 설치한다.

 

 

동전 소지 변수를 Set 형태로 가져온다.

Alt 키를 누른 채로 드래그하여 바로 생성할 수 있다.

 

 

이어서 동일한 변수를 Get 형태로 가져온다.

Ctrl 키를 누른채로 드래그하여 바로 생성할 수 있다.

 

 

Get으로 가져온 동전개수 변수의 출력 핀으로부터 add 노드를 생성하고 연결한다.

 

 

수가 변했는지 확인하기 위해 Print String 노드를 이어서 배치한다.

 

 

컴파일 후 실행하면 C 키를 누를 때마다 수가 올라간다.

 

 

어떤 컴포넌트 값을 변수로 대체하려면 그 값을 끌어와 변수로 승격 버튼을 눌러주면 된다.

 

 

이렇게 만들면 그래프를 찾아다닐 필요 없이 내 블루프린트 패널에서 쉽게 찾아 수정할 수 있다.

 

 

다만 시작할 경우 변수 값이 초기화가 되어있지 않으면 문제가 될 수 있으므로, 게임 시작시 변수 값을 할당해 주는 것이 좋다.

Event BeginPlay 노드에서 Set으로 걷기 속도를 지정해준다.


2. 서브루틴

생성을 위해선 내 블루프린트 패널의 함수를 추가하면 된다.

 

 

그리고 기존의 C키로부터 동전 소지를 늘리는 이벤트를 잘라내어 가져온다.

 

 

트리거를 테스트하는 맵을 열고, 코인 블루프린트를 연다.

이벤트 그래프 탭에서 On Component Begin Overlap과 연결된 Actor Has Tag와 Branch 노드를 지운다.

그러고 나서 Other Actor 출력 핀으로부터 플레이어 캐릭터로 형변환 노드를 생성한다.

 

 

형변환 노드의 플레이어 캐릭터 핀으로부터 AddCoin 함수를 불러온다.

 

 

나머지를 연결한다.

 

 

플레이 했을 때 동전을 먹으면 성공적으로 함수를 불러 변수가 변경된다.

 

 

플레이어 캐릭터 블루프린트에서 AddCoin 함수를 선택하면 디테일 패널에서 입력을 추가할 수 있다.

 

 

인티저 파라미터 하나를 추가한다.

 

 

이러면 동전 블루프린트의 AddCoin 함수에 파라미터 하나가 생성된다.

값을 1로 변경한다.

 

 

플레이어 캐릭터 블루프린트의 AddCoin 함수에도 새로운 파라미터가 생성되는데, + 노드와 마저 연결해준다.

 

 

이제 함수에 매개변수를 생성하였으므로, 특정 값을 전달하면 그 값이 반영되어 함수가 실행된다.

 

 

출력핀도 활용할 수 있다.

 

동전의 개수를 반환하는 새 함수를 만들고,

함수에 입력핀을 추가한 것 처럼 아래에서 출력핀을 추가할 수 있다.

 

 

동전 개수를 표시하는 변수를 Get 형태로 가져와 Return Node의 핀에 연결한다.

 

 

레벨 블루프린트를 열고 새 커스텀 이벤트를 추가한다.

 

 

형변환 노드와 Set Player Pawn 노드를 가져와 위 이벤트와 연결한다.

 

 

파란색 출력 핀으로부터 방금 만든 함수를 불러오고, Print String으로 디버그 출력을 완성한다.

 

 

Event BeginPlay 노드로부터 Set Timer by Function Name 노드를 설치한다.

 

 

Function Name에 코인 개수를 표시하는 이벤트의 이름을 적는다.

Time에는 1을 입력하고 Looping(반복)에 체크한다.

 

 

테스트 해 보면 1초마다 한 번씩 현재 가지고 있는 코인의 개수가 표시된다.

C키를 눌러 코인을 획득하면 변경된 수로 표시된다.

 

 

실행 순서에 상관없이 동작할 수 있는 노드는 순수 노드로 변경할 수 있다.

함수의 디테일 페널에서 퓨어 옵션을 클릭하거나, 변경할 노드를 우클릭해서 순수 노드로 변경할 수 있다

 

 

동전을 일종의 스태미나 개념으로 활용하기 위해 함수를 새로 생성한다.

 

 

동전 개수 변수를 Get 형식으로 가져오고, 조건 확인을 위해 >= 노드를 생성한다.

 

 

분기 노드를 하나 생성하여 함수 실행 노드와 연결하고, condition 입력 핀에 조건 노드의 출력을 연결한다.

 

 

조건이 참일때 코인을 하나 감소하는 노드 네트워크를 구성한다.

 

 

동작 확인을 위해 X키를 눌렀을 때 감소가 일어나도록 설정했고 의도한 대로 동작하는 것을 확인할 수 있다.

 

 

스크롤을 얻었을 때의 이벤트를 정의하기 위해 새로 커스텀 이벤트를 생성한다.

 

 

스크롤을 얻었다면 게임의 목적이 달성된 것이므로 움직일 필요가 없다.

 

 

스크롤을 얻었으므로 변수를 변경한다.

 

 

5초 이후 달성 메시지를 표시한다.

 

 

스크롤 블루프린트를 열고, OnComponentBeginOverlap의 노드 네트워크를 대체해준다.

 

 

블루프린트 라이브러리를 만들면 해당 프로젝트 전체에서 그 기능을 반복적으로 사용할 수 있다.

콘텐츠 브라우저에서 빈 공간을 우클릭하여 블루프린트 탭> 블루프린트 함수 라이브러리를 생성한다.

 

 

이 게임에서 Z축을 쓰지 않으니 XY축의 벡터로 변환하기 위해, 기본으로 제공된 함수의 이름을 변경한다.

 

 

순수함수로 변경하고

 

 

입력과 출력을 하나씩 벡터형으로 생성한다.

 

 

입력 파라미터로 부터 Break Vector 노드를 생성해 XYZ 벡터를 분해한다.

 

 

Break Vector 옆에 Make Vector 노드를 생성하고 X, Y와 출력 핀을 연결한 후 컴파일 한다.

 

 

내 블루프린트 패널에서 함수를 하나 추가한다.

 


지금까지는 카메라가 머리쪽으로 가 있을 수록 이동하는 속도가 줄었지만,

그것과 상관없이 일정한 속도를 유지하기 위해 방향에서 Z축을 제거해야 한다.

 

 

이후 플레이어 캐릭터 블루프린트로 가서 이동 부분에 방금 만든 라이브러리 함수를 끼워넣는다.

 

 

매크로 라이브러리를 생성하려면 콘텐츠 브라우저의 빈 공간을 우클릭하여 블루프린트 탭 > 매크로 라이브러리를 눌러 생성한다.

사용할 수 있는 부모 클래스를 정해야 하며, 이 외의 클래스에서는 이 매크로를 사용할 수 없다.

 

 

기본적으로 제공되는 매크로의 이름을 변경하고, 플로트 출력 핀을 1개 생성한다.

 

 

빈 공간으로부터 Get Velocity를 생성하고,

 

 

이전에 만든 Flatten Vector를 사용한다.

 

 

Flatten Vector의 출력 핀으로부터 vectorLength를 생성하고 나머지와 연결한다.

 

 

플레이어 캐릭터 블루프린트의 내 블루프린트에서 새 함수를 추가한다.

 

 

현재 속도가 스프린트의 속도인지 확인하고, 스프린트 속도라면 코인을 감소시키는 노드 네트워크를 구성한다.

 

 

이벤트 그래프에서, Event BeginPlay 네트워크의 Set 이후, Set Timer by Function Name 노드를 생성한다.

 

 

함수 이름과 시간을 채워넣는다.

 

 

달리는 동안 일정 시간마다 코인이 감소한다.


2025.02.01 - [언리얼 엔진/실습 PJT] - 책 따라하기 13 - 물리 엔진

 

책 따라하기 13 - 물리 엔진

실전 게임 제작으로 배우는 언리얼 엔진 4 | 미나토 카즈히사 - 교보문고 실전 게임 제작으로 배우는 언리얼 엔진 4 | 미나토 카즈히사 - 교보문고실전 게임 제작으로 배우는 언리얼 엔진 4 | [실

violetookamiscythe.tistory.com

 

728x90