Unreal Engine/게임클래스 - 언리얼엔진 기초

[19강] Spawn Actor & AttachToComponent

whereareyoung 2023. 10. 6. 16:32

이번 시간에 다룰 내용

Spawn Actor : Actor 를 화면에 구현하는데 사용 

AttachToComponent : Spawn 한 Actor 를 socket 에 붙이기 위한 기능 구현에 사용 

 

< 무기 그래픽 구현 >

1. 필요한 무기 어셋 임포트 

캐릭터 파일 > 탐색기에서 표시 > Sword 임포트 

 

< 무기 정보 이해 >

다운로드 한 파일에는 다음과 같이 피직스, 스켈레톤, 메시 정보와 텍스쳐가 들어있었다. 

무기는 정적 메시이기에 StaticMesh 라고 오해할 수 있지만, 손 등과 정확히 상호작용하기 위해 SkeletalMesh 구조여야 한다. (따라서 뼈대가 들어가 있다.)

SkeletalMesh 이기 때문에 후에 있을 작업에서 Trail 등의 기능도 구현가능하다. 

2. 무기를 구현하기 위한 Actor 를 보관할 폴더 " Weapons " 를 생성한다. 

 

3. " Weapons " 폴더 안에 블루프린트 Actor " BP_Sword " 생성 

무기는 입력을 받거나 캐릭터 움직임이 있는것이 아니라 캐릭터의 움직임에 따라 나타나고 이동하는 등의 역할을 한다. 

등장하고, 붙어서 움직이기 때문에 기본 Actor에서 상속받아 구현한다. 

 

4. 어셋을 받는 과정에서 텍스쳐가 날아가서 다시 끼워주었다. 

파일이 이상해서 확인한 상태 

 

각 텍스쳐를 맞게 끼움

 

5. " BP_Sword " > 캐릭터 컴포넌트 추가 > SkeletalMesh 

6. SkeletalMesh > 다운로드 받은 칼의 Mesh, Materials 가져와서 넣어주기 

 

7. 이전에 작업했던 부분 > 노드접기 > " Sword Event "

 

8. 소켓만들기 

소켓: 무기나 아이템을 붙이기 위해사용하는 가상의 위치 

 * 프리뷰에셋 추가 기능을 활용하면 쉽게 구현가능

 

--1) Skel_Mannequin > Hand_R > 오른쪽버튼 > 소켓추가 > " Sword "  

--2) Skel_Mannequin > Thigh_L > 오른쪽버튼 > 소켓추가 > " Holster_Sword "  

 

9. Begin Play 이벤트로 소켓에다가 칼을 붙여주기 

--1) Begin Play 이벤트 생성 > Spawn actor 치다가 " 클래스에서 액터 스폰 "

* SpawnActor : 지정한 액터 클래스를 화면(레벨)에 등장시킴

Spawn Transform : 등장 위치, 크기, 회전값이 들어가지 않으면 오류가 남 

Collision Handling Override : 등장할때, 그 위치에 이미 값이 있을경우의 처리

(마우스 가져다 대서 확인 가능)

Owner : 등장의 소유자

Return Value : BP_Sword 로 부터 만들어진 객체를 리턴해주며, 다양하게 활용할 수 있음 

 

--2) 변수 " Sword " , BP_Sword 자료형 생성

 

--3) 다음과 같이 설정함 

* AttachtoComponent : 소켓은 Mesh 등록되어있으므로 " AttachtoActor " 를 사용할 수 없음. 

Mesh 안에 Socket 이 들어있기 때문에 Parent 하고 Socket 의 이름을 넣어줌  

(Location Reule, Rotation Rule, Scale Rule 등은 나중에 테스트 해보면서 결과를 보는게 이해에 편함, 언리얼 메뉴얼 참고)

* Socket 의 크기를 조정하였기 때문에 Rule 을 " Keep Relative " 를 채택함

 

언리얼팁

소켓 붙이는 작업 중 " 프리뷰 어셋 추가 "

프리뷰 어셋 : 미리보기용 어셋을 붙이는 기능 (게임에는 적용되지 않음)

 

10. 노드접기 > "BeginPlay Event"

* 제일 먼저 이루어 지기 때문에 앞으로 옮겨줌 

 

11. 무기 장착 및 해제 구현

--1) Sword Event > 그래프 정리 "Sheath Sword", "Equip Sword"   

--2) custom event " Grab Sword ", "UnGrab Sword" 생성 

 

12. 무기를 장착할 Notify 만들기 " AN_GrabSword ", " AN_UngrabSword " 생성 

* Nofify 는 통보, 실제 기능은 Player 에 구현 > 유지보수가 쉬움 

--1) " AN_GrabSword "

--2) " AN_UngrabSword "

 

13. Animation > DrawSword2 > Notify "GrabSword "추가 

 

14. Animation > sheathSword2 > Notify "UngrabSword "추가 

 

언리얼 팁 

아웃라이너에 프로그램 코드나 자동으로 만들어지는 객체들은 다 노랑으로,

끌어다 놓은 것 들은 회색으로 표시가 됨 

 

테스트를 해보면 자연스럽게 무기를 장착하고, 허리에 차는 애니메이션이 완료가 되었다. 

이제 다음에는 공격구현을 해 볼 예정이다. 큰 오류 없이 진행되어 기쁘고, 다음 구현이 너무 기대가 된다.