TIL - Today I Learned : Overlap Event와 Hit Event
오늘의 진도: Section 4: Crypt Raider 96. Grabbing With Physics Handle ~ 100. Constructors
Grabbing With Physics Handle
물체를 잡을 위치도 확인을 하였으니 이제 물체를 잡고 움직이면 된다.
FHitResult는 충돌한 물체에 대한 정보를 가지고 있다.
그 중 UPrimitiveComponent가 있는데 얘는 SceneComponent로, 기하학적 구조를 포함하거나 생성하고,
일반적으로 랜더링되거나 충돌 데이터로 사용된다고 한다.
이 UPrimitiveComponent의 함수 중 GetComponent가 있어서 충돌한 물체의 컴포넌트를 가져올 수 있다.
닿은 물체가 있다면 해당 물체의 위치를 적당한 위치로 설정한다.
참고 링크 : FHitResult UPrimitiveComponent
Waking Physics Objects
물리 시뮬레이션 컴포넌트는 성능상의 이유로 일정 시간 움직이지 않으면 슬립상태로 들어간다.
이를 해결하기 위해 오브젝트와 충돌했을 때 다시 깨워주도록 한다.
UPrimitiveComponent가 이 역할을 할 수 있다.
물체를 놓을 때는 ReleaseComponent() 함수를 호출한다.
참고 링크 : ReleaseComponent()
Returning Out Parameters
특정 거리 내에 물체가 잡을 수 있는 물체인지 판독하는 함수를 따로 분리한다.
FHitResult를 참조 받지만 함수 내에서 변경하지 않으니 실수를 하지 않기 위해 const를 붙여 준다.
Overlap Events
두 Object Channel에서의 옵션은 아래와 같이 처리된다.
서로 다른 옵션이 있다면 덜 블록되는 방향으로 처리가 된다.
플레이어는 나무와 Overlap Event가 발생하고 벽과는 Hit Event가 발생하는 것이다.
Overlap Event를 발생하기 위해서는 Collision -> Generate Overlap Events가 활성화 되어있어야한다
벽에 box component를 추가해서 트리거 기능을 넣고 싶은데
블루프린트를 이용하는 것이 아닌 C++ Component를 만들고 싶을 때는
+Add -> New C++ Component -> All Classes -> Box Component 선택하여
UBoxComponent를 상속받 C++ Component를 생성한다.
처음 생성 되었을 때는 블루프린트에서 추가가 되지 않는데
이유는 BlueprintSpawnableComponent라고 명시해 줘야 한다.
참고 링크 : Collision-Filltering
Constructors
TickComponent를 활성화 하려면 PrimaryComponentTick.bCanEverTick 을 True로 설정해야한다.
생성자에서 해당 기능을 활성화 하도록 하였다.
'Unreal Engine > Udemy:UE5 C++ 학습하고 게임 만들기' 카테고리의 다른 글
Unreal Day - 29 - Dependency Injection (1) | 2024.06.26 |
---|---|
Unreal Day - 28 - GetOverlappingActors() (2) | 2024.06.21 |
Unreal Day - 26 - Hit! (0) | 2024.06.18 |
Unreal Day - 25 - Reference & Pointer (0) | 2024.06.17 |
Unreal Day - 24 - FMath::VInterpConstantTo (2) | 2024.04.21 |