1. 기존
Pointer* 타입일때는 그냥 = 로 대입하면됬다.
ThisActor = Cast<IEnemyInterface>(CursorHit.GetActor());
2. 개선
IE의 하위객체로 제한하기위해 타입을 바꿧다.
void CursorTrace();
TScriptInterface<IEnemyInterface> LastActor; //가장최근에 가리킨 적
TScriptInterface<IEnemyInterface> ThisActor; //현재커서위치가 가리키는 적
문제 : = 연산자가 안먹힘
3. 해결
i) HitActor->Implements<UEnemyInterface>()는 HitActor가 UEnemyInterface를 구현하는지 확인합니다.
ii) ThisActor.SetObject(HitActor);는 TScriptInterface의 UObject 부분을 설정합니다.
- ThisActor.SetInterface(Cast<IEnemyInterface>(HitActor));는 TScriptInterface의 인터페이스 부분을 설정합니다.
TScriptInterface<IEnemyInterface> ThisActor; // 현재 커서 위치가 가리키는 적
AActor* HitActor = CursorHit.GetActor();
if (HitActor && HitActor->Implements<UEnemyInterface>())
{
ThisActor.SetObject(HitActor);
ThisActor.SetInterface(Cast<IEnemyInterface>(HitActor));
}
else
{
// Handle the case where the actor does not implement the interface
ThisActor = nullptr;
}
즉,
1. 구현확인
2. 오브젝트부분설정
3. 인터페이스부분 설정
하면된다.
'UE5' 카테고리의 다른 글
[UE5] 향상된 입력 사용방법 (0) | 2024.05.25 |
---|---|
[UE5] 리플렉션 시스템 (0) | 2024.05.24 |
[UE5] 비행기만들기, 이동 회전 구현 (0) | 2024.05.13 |
[UE5] 머태리얼, 텍스쳐 (0) | 2024.05.13 |
[UE5] 가고일 물리반응 끄기, trigger에 붙여서 같이 내려가도록 구현 (0) | 2023.09.18 |