-
Gameplay Ability SystemUnreal Engine 2024. 4. 30. 22:19
액터가 소유하고 발동할 수 있는 어빌리티 및 액터 간의 인터랙션 기능을 제공하는 프레임워크
게임플레이 이펙트: 시각적 효과가 아닌 스탯, 데이터에 영향을 미치는 효과 게임플레이 어빌리티 시스템의 흐름 액터에 GAS 적용하는 방법
1. 헤더에 AbilitySystemInterface.h를 include한다. (public IAbilitySystemInterface 추가)
2. ASC를 리턴하는 함수를 상속받는다.
virtual class UAbilitySystemComponent* GetAbilitySystemComponent() const override { return ASC; };
3. ASC를 저장할 포인터를 생성한다.
UPROPERTY(EditAnywhere, Category=GAS) TObjectPtr<class UAbilitySystemComponent> ASC;
4. 생성자에서 ASC를 생성한다.
ASC = CreateDefaultSubobject<UAbilitySystemComponent>(TEXT("ASC"));
5. PostInitializeComponents() 함수에서 ASC를 초기화해야 한다.
UAbilitySystemComponent::InitAbilityActorInfo(AActor *InOwnerActor, AActor *InAvatarActor)
InOwnerActor: 실제 ASC를 구동하고 데이터를 관리하는, 실제로 작업을 수행하는 액터
InAvatarActor: 비주얼만 실행하는 액터
ASC->InitAbilityActorInfo(this, this);
6. GameplayAbility를 상속받는 C++ Class를 만든다.
CancelAbility, ActivateAbility 등 함수를 override한다.
AActor* AvatarActor = ActorInfo->AvatarActor.Get(); if (AvatarActor) { URotatingMovementComponent* RotatingMovement = Cast<URotatingMovementComponent>(AvatarActor->GetComponentByClass(URotatingMovementComponent::StaticClass())); if (RotatingMovement) { RotatingMovement->Activate(true); } }
'Unreal Engine' 카테고리의 다른 글
Unreal Engine5 AI가 NavMeshVolume을 벗어나는 문제 (0) 2024.05.15 Unreal Engine5 LNK 외부 참조 에러 대부분 이걸로 해결 (0) 2024.05.09 온라인 서브시스템과 세션 생성, 찾기 (0) 2024.04.29 캐릭터의 HP (ActorComponent) Replicate (0) 2024.04.23 네트워크 환경에서 공격과 피격 구현 (0) 2024.04.23