언리얼 엔진/실습 PJT

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

VioletOokamiScythe 2025. 1. 28. 21:06
728x90

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

 

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

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

product.kyobobook.co.kr

2025.01.26 - [언리얼 엔진/실습 PJT] - 책 따라하기 10 - 커스텀 이벤트

 

책 따라하기 10 - 커스텀 이벤트

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

violetookamiscythe.tistory.com


목차

1. 생성

2. 삭제

3. 삭제 후 재생성

4. 테스트


1. 생성

스폰 위치 지정은 위치 정보만 가지고 있는 타깃 포인트를 활용한다.

테스트용 새 맵을 생성해 열고, 액터 배치 패널에서 타깃 포인트 액터를 검색해 배치한다.

 

 

스위치 블루프린트를 타깃 포인트 근처에 배치한다.

 

 

레벨 블루프린트를 열고, 스위치 블루프린트를 선택한 채로 눌릴때의 이벤트를 검색해 배치한다.

 

 

생성된 노드에서 선을 끌어 Spawn을 검색하고 Spawn Actor from Class를 찾아 배치한다.

 

 

클래스는 코인으로 지정해주고

 

 

맵에 배치한 타깃 포인트를 선택한 후 레벨 블루프린트로 돌아와 레퍼런스를 생성한다.

 

 

생성한 레퍼런스로부터 위치를 가져와 Spawn Actor 노드와 연결한다.

위치를 가져오는 것은 Get Actor Transform 노드로 해결할 수 있다.

 

 

게임을 실행하고 스위치에 올라가보면 코인이 생성된다.


2. 삭제

디버그용 맵을 새로 만들고, 월드 세팅 패널의 킬 Z를 -100으로 변경한다.

 

 

레벨 블루프린트를 열고, 이벤트 그래프에서 K키 입력 이벤트 노드를 설치한다.

 

 

K 이벤트 노드의 Pressed로 부터 Any Damage 노드를 생성한다.

 

 

Apply Damage 노드의 Damaged Actor 입력 핀으로부터 Get Player Pawn 노드를 생성한다.

 

 

캐릭터 블루프린트를 열고 AnyDamage 이벤트 플로우의 마지막에 Disable Movement 노드를 배치한다.

 

 

플로우의 마지막에 Set Lifespan 노드를 배치하고 수명을 5로 설정한다.

 

 

죽었다는 메시지 표시 5초 후 캐릭터가 삭제된다.

 

 

이러한 경우 플레이어가 데미지를 입을 때 마다 수명이 5초로 설정되기 때문에, 지속적으로 데미지를 입는다면 오히려 죽지 않는다.

그렇기 때문에 한 번만 실행하도록 하는 DoOnce노드를 AnyDamage 이벤트 노드 다음으로 배치한다.


3. 삭제 후 재생성

게임모드 블루프린트를 열고 이벤트 그래프의 빈 공간에 커스텀 이벤트를 하나 생성한다.

만약 그래프가 보이지 않는다면 아래 그림에서 파란색으로 연결된 풀 블루프린트 에디터 열기 버튼을 누른다.

 

 

생성된 이벤트로부터 Spawn Actor from Class 노드를 생성한다.

 

 

SpawnActor 노드의 Class 입력 핀으로부터 플레이어 폰 클래스를 지정하고,

아래 Spawn Transform 근처에 Find Player Start 노드를 찾아 배치한다.

 

 

FindPlayerStart 노드의 Return Value 핀으로부터 Get Actor Transform 노드를 생성한다.

 

 

SpawnActor의 Spawn Transform 핀과 연결한다.

 

 

이어서 플레이어 컨트롤러를 연결하기 위해 빈 공간에 GetPlayerController 노드를 배치한다.

 

 

Return Value 핀으로부터 Possess 노드를 찾아 배치한다.

 

 

SpawnActor 노드 다음으로 Possess 노드를 연결하고 SpawnActor 의 Return Value와 Possess의 In Pawn을 연결한다.

 

 

이벤트 노드들은 게임을 시작하기 전 미리 연결해 두는 형식으로, 이후 재생성되는 플레이어 캐릭터에게는 연결되어있지 않다.

따라서 플레이어 캐릭터가 다시 생성될 때마다 이벤트를 묶어줘야 한다.

 

게임모드 블루프린트의 이벤트 그래프에서 Event BeginPlay 노드를 찾고, 근처 빈 공간에 Get Player Pawn 노드를 배치한다.

 

 

Get Player Pawn의 Return Value로 부터 Bind Event to On Destroyed를 생성한다.

 

 

Event BeginPlay와 Bind Event 노드를 연결하고,

커스텀 이벤트 RespawnPlayer 옆의 네모 핀을 Bind Event의 Event 입력 핀과 연결한다.

만약 연결이 안된다면, Event 네모 입력 핀으로부터 Custom Event를 새로 생성하고 기존 RespawnPlayer를 대체한다.

 

 

반복되는 죽음에도 계속 이벤트가 묶일 수 있도록 Possess 이후에도 Bind Event노드를 연결해준다.


4. 테스트

프로토 타입 맵을 열고 킬 Z 옵션을 -10으로 설정했다.

 

 

슬로프에 동전을 생성할 타깃 포인트를 하나 배치했다.

 

 

레벨 블루프린트에서 OnTurnedOn 이벤트 근처에 시퀀스 노드를 배치하고 연결했다.

 

 

Sequence의 0번 핀에 동전을 생성할 노드 네트워크를 구성하였다.

한 번만 생성되어야 하므로 DoOnce 노드를 활용한다.

 

 

실행해보면 없던 동전이 문이 열림과 동시에 생성된다.


2025.01.30 - [언리얼 엔진/실습 PJT] - 책 따라하기 12 - 변수, 위협과 보상

 

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

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

violetookamiscythe.tistory.com

 

 

 

728x90