FindComponentByClass() & nullptr
Grab 기능을 블루프린트로 가져왔지만, 실제로 잡는 것이 아니라 단순 로그메시지만 출력하고 있다.
물체를 잡으려면 물리 시스템과 상호작용을 해야하는데, 여기서 사용되는 것이 PhyscisHandle 컴포넌트이다.
BP_Player에서 직접 추가가 가능하다.
이제 PhysicsHandle 컴포넌트를 Grabber 컴포넌트에서 얻을 방법을 알아야한다.
우선 PhysicsHadnle 컴포넌트를 사용하기 위해 헤더부터 선언해준다.
이제 FindComponentByClass 함수를 통해 PhysicsHandle 컴포넌트를 얻는 것이 가능하다.
해당 함수는 템플릿 함수로 여태 봤던 함수와 사뭇 다른 형태를 가지고 있다.
템플릿 함수는 컴파일 할 때 실제로 평가되는 매개변수들을 전달할 수 있다.
쉽게 말해 자료타입이 정해지지 않았고, 이를 우리가 원하는 타입으로 직접 전달하여 값을 얻을 수 있는 것이다.
여기서 우리가 찾는 것은 PhyscisHandle 컴포넌트이므로 UPhysicsHadnleComponent를 작성하게 된다.
전달하는 변수는 <> 안에 작성하게 된다.
반환 값은 포인터이므로 UPhysicsHandleComponent 포인터 변수에 담아주게 된다.
여기서 해당 포인터 변수가 null 인 경우 엔진 충돌이 일어나 에디터가 꺼지는 불상사가 발생할 수 있다.
따라서 해당 포인터가 null인지 아닌지 꼭 체크를 해주는 습관을 들이는 것이 좋다.
이제 간단하게 우리가 찾은 PhysicsHandle의 이름을 출력해보면 무사히 출력되는 것을 볼 수 있다.
만약에 BP_Player에서 PhysicsHandle 컴포넌트를 지운다면 엔진 충돌이 일어나게 된다.
'Unreal > Udemy 강의' 카테고리의 다른 글
Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 4-26 (0) | 2024.03.24 |
---|---|
Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 4-25 (0) | 2024.03.24 |
Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 4-23 (0) | 2024.03.23 |
Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 4-22 (0) | 2024.03.23 |
Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 4-21 (0) | 2024.03.22 |