소켓을 통해 메시에 부착하기
만든 총을 부착하기 위해서는 기존에 있던 총을 제거하거나 안보이도록 감추는 작업을 해주어야 한다.
우선 총이 스켈레톤 메시의 어느 부분에 해당하는지 체크해보자.
이제 해당 메시를 C++ 에서 잡아주는 작업을 해보자.
GetMesh() 함수를 통해 해당 메시를 얻는 것이 가능하다.
이후 얻은 메시를 감춰주어야 하는데, 이는 HideBoneByName 함수로 가능하다.
해당 함수는 감출 대상의 이름과, EphysBodyOp 이라는 변수를 받는다.
PBO_None을 작성함으로서 디폴트값 표시가 가능하다.
기존 weapon_r의 위치를 사용하기 위해 해당 위치에 소켓을 생성해주자.
해당 소켓은 끼워 넣을 수 있는 지점을 나타내게 된다.
이제 해당 메시를 생성한 소켓 위치에 붙여주는 작업을 해야한다.
하지만 액터는 씬과는 다르게 계층 구조가 없으므로 어태치가 불가능하나, AttachToComponent 함수를 통해 붙여주는 작업이 가능하다.
해당 함수에 FAttachmentTransformRules 값이 변수로 들어가는데,
총이 기본적으로 월드의 (0, 0, 0)에 위치하기를 원하기 때문에 KeepRelativeTransform을 선택하였다.
그리고 총의 Owenr를 캐릭터로 설정해주었다.
액터들 사이에는 계층 구조가 없는 대신 오너십이 존재한다.
오너십을 통해서 총이 그걸 소유하는 캐릭터를 알게 해주고, 이를 이용해 총을 소유하는 캐릭터를 참조할 수 있게 된다.
해당 작업을 하지 않아도 우리가 원하는 기존 목적에는 지장이 없으나, 완성도를 위하여 해주었다.
이제 컴파일하고 실행해보면 총이 제대로 스폰된다.
하지만 위치가 살짝 다른데, 이는 해당 화면에서 직접 기즈모를 통해 조절해주고 조절한 값을 기억하여 BP_Rifle의 위치를 해당 위치 값으로 변경해주면 된다.
'Unreal > Udemy 강의' 카테고리의 다른 글
Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 6-16 (0) | 2024.05.03 |
---|---|
Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 6-15 (0) | 2024.05.03 |
Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 6-13 (0) | 2024.05.02 |
Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 6-12 (0) | 2024.05.02 |
Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 6-11 (0) | 2024.05.02 |