* 나만의 AT 만들기
- 구현
UCLASS()
class AURA_API UTargetDataUnderMouse : public UAbilityTask
{
GENERATED_BODY()
//메타 => 기본값으로 this ==self 지정
UFUNCTION(BlueprintCallable, Category="Ability|Tasks", meta=(DisplayName = "TargetDataUnderMouse",HidePin="OwningAbility",
DefaultToSelf="OwningAbility",BlueprintInternalUseOnly="true"))
static UTargetDataUnderMouse* CreateTargetDataUnderMouse(UGameplayAbility* OwningAbility);
};
단순히 클릭된 Obj를 반환하는 함수임
UTargetDataUnderMouse* UTargetDataUnderMouse::CreateTargetDataUnderMouse(UGameplayAbility* OwningAbility)
{
UTargetDataUnderMouse* MyObj = NewAbilityTask<UTargetDataUnderMouse>(OwningAbility);
return MyObj;
}
* BP에 핀 추가하기
우리는 (MouseTarget)Data 핀이 필요함
BP에 핀추가하려면 델리게이트를 브로드캐스팅 해야함
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FMouseTargetDataSignature, const FVector&, Data);
/**
*
*/
UCLASS()
class AURA_API UTargetDataUnderMouse : public UAbilityTask
{
...
UPROPERTY(BlueprintAssignable)
FMouseTargetDataSignature ValidData;
};
* 실습
- 부모의 Activate 구현
마우스커서의 위치를 방송함
이러면 Data안에 위치값이 들어가는듯하다
void UTargetDataUnderMouse::Activate()
{
//부모super호출 : 로그만찍음 -> 필요없음
//1. 마우스 커서의 Location 얻기
//PC얻기 <= 부모가 갖고있는 Ability 변수
APlayerController* PC = Ability->GetCurrentActorInfo()->PlayerController.Get();
FHitResult CursorHit;
PC->GetHitResultUnderCursor(ECC_Visibility, false,CursorHit); //커서힛에 정보넣어줘
ValidData.Broadcast(CursorHit.Location); //그 위치 방송
}
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FMouseTargetDataSignature, const FVector&, Data);
class AURA_API UTargetDataUnderMouse : public UAbilityTask
{
...
UPROPERTY(BlueprintAssignable)
FMouseTargetDataSignature ValidData;
* 한계
로컬클라에는 정상표시, but 서버에는 0,0,0에 표시됨
즉, 서버에서 모든 데이터가 0인것임
서버는 클라에서 뭔하는지 모르기떄문
클라만이 자신의 마우스 위치를암, 서버로 전송되는 데이터가 아님
- 해결 : 클릭하는 위치를 서버에 알려줘야함
* Next Step
클라에서 서버로 데이터 전달방법
'UE5 > Ability Tasks' 카테고리의 다른 글
[UE5] 발사체 적방향으로 발사구현, shift키 + 허공클릭시 발사구현// 캐릭 겹침시 카메라 확대 해결, 클라에서 발사체 방향 버그 수정 (0) | 2024.06.13 |
---|---|
[UE5] GAS 에서 예측 개념 (0) | 2024.06.12 |
[UE5] 클라에서 서버로 data 보내고 받기 구현, 클라에서 캐릭안보임버그 해결 (0) | 2024.06.12 |
[UE5] GAS::Target Data System // 클라에서 서버로 data 전달방법 (0) | 2024.06.10 |
[UE5] Ability Task 개념, 불 발사 몽타주 구현 (0) | 2024.06.09 |