





IInteractalbe
GetInteractionDataFInteractionData를 전달InteractUFUNCTION 키워드를 BlueprintNativeEvent 로 지정하여 블루프린트 /C++ 구현 가능FInteractionData
UInteractionComponent
TSet에 추가, 오버랩 End에서 제거InteractionPoint
UAbilityTask_MoveToLocation
유연한 구조의 상호작용 어빌리티
상호작용 오브젝트마다 실행 시점, 캐릭터 동작 방식 등이 모두 다름
템플릿 클래스에서 해당 동작들을 미리 정의
자식 어빌리티를 생성 후 템플릿 클래스를 그대로 사용 또는 오버라이드
원하는 시점에 맞게 각 함수들의 순서를 조합해서 어빌리티를 구성
상호작용 마다 새로운 어빌리티를 구현할 필요 없는 유연한 구조 보장
상호작용 어빌리티 템플릿 코드
UCLASS(Abstract)
class SK_API USK_GA_InteractionTemplate : public USK_GA_InteractionBase
{
GENERATED_BODY()
protected:
UFUNCTION()
virtual void OnMoveCompleted() PURE_VIRTUAL(USK_GA_InteractionTemplate::OnMoveCompleted,);
UFUNCTION()
virtual float GetDistance(ASKPlayerCharacter* PlayerCharacter, FVector TargetLocation);
UFUNCTION()
virtual FRotator GetTargetRotation(ASKPlayerCharacter* PlayerCharacter, FVector TargetLocation);
UFUNCTION()
virtual void SetForceMove(ASKPlayerCharacter* PlayerCharacter, const bool bForceMove, const EForceMoveMode ForceMoveMode);
UFUNCTION()
virtual void MoveToLocation(ASKPlayerCharacter* PlayerCharacter, FVector TargetLocation, const float Duration, const EForceMoveMode ForceMoveMode);
UFUNCTION()
virtual void PlayAnimMontage(UAnimMontage* InteractMontage);
UFUNCTION()
virtual void ExecuteTargetInteraction(UObject* TargetActor, AActor* Interactor);
UFUNCTION()
virtual void OnMontageCompleted();
UFUNCTION()
virtual void OnMontageCanceled();
};
인접한 상호작용 가능 표시 위젯

상호작용 위젯

각 위젯 동작 방식
상호작용 오브젝트 목록



