스킬 구현 (Cost & CoolTime / 최종 데미지 수동 계산) - GAS 스킬에 사용에 필요한 Cost를 구현해보자.간단하게 GameplayEffect를 제작한다.이때 Duration Policy는 Instant로 해야한다.이 Blueprint의 의미는 SkillEnergy값에서 -40을 뺀다는 의미이다.현재 SkillEnergy가 100이면 2번은 가능하지만 3번은 불가능하게 제작하려고 하는 것이다.Skill GA에 다음과 같이 제작한 Blueprint를 지정을 해주면 알아서 처리해준다. 이제 쿨타임 Effect Blueprint는 다음과 같이 제작한다.이렇게만 하면 Ability는 발동만하고 추가적인 처리를 해주지 않는다.그렇기에 Tag를 추가하고쿨타임 Effect의 해당 부분을 추가해준다.남은 시간 같은 것은 API로 지원해주지만 자동으로 CoolTime으로 막아주지 않.. 2025. 8. 28. 스킬 구현 (데미지 & Cue 부여 / Skill Attribute) - GAS 이전 글에서 이어지는 글이다.void UABGA_AttackHitCheck::OnTraceResultCallback(const FGameplayAbilityTargetDataHandle& TargetDataHandle){ //일반 공격시 HitResult가 있기에 아래 if 구문이 실행된다. if (UAbilitySystemBlueprintLibrary::TargetDataHasHitResult(TargetDataHandle, 0)) { ... } //스킬을 사용해서 MultiTrace를 해서 Actor 정보가 있는지 확인하는 동작이다. else if (UAbilitySystemBlueprintLibrary::TargetDataHasActor(TargetDataHandle, 0)) { //어트리뷰트에.. 2025. 8. 28. 스킬 구현 (Skill GA & Anim & TargetActor 감지) - GAS GAS를 활용하여 범위 공격 스킬을 구현해보자.#include "GA/ABGA_Skill.h"#include "Character/ABGASCharacterPlayer.h"#include "GameFramework/CharacterMovementComponent.h"#include "Abilities/Tasks/AbilityTask_PlayMontageAndWait.h"UABGA_Skill::UABGA_Skill(){ }void UABGA_Skill::ActivateAbility(const FGameplayAbilitySpecHandle Handle, const FGameplayAbilityActorInfo* ActorInfo, const FGameplayAbilityActivationInfo Activa.. 2025. 8. 28. 아이템 상자 제작 - GAS 아이템 상자의 cpp은 다음과 같다.#include "Item/ABGASItemBox.h"#include "AbilitySystemComponent.h"#include "Components/BoxComponent.h"#include "Physics//ABCollision.h"#include "AbilitySystemBlueprintLibrary.h"#include "Components/StaticMeshComponent.h"// Sets default valuesAABGASItemBox::AABGASItemBox(){ ASC = CreateDefaultSubobject(TEXT("ASC")); Trigger = CreateDefaultSubobject(TEXT("BoxComponent")); Mesh =.. 2025. 8. 27. 게임플레이 큐 & 공격 파티클 재생 - GAS 게임플레이 큐시각 이펙트나 사운드와 같은 게임 로직과 무관한 시각적, 청각적 기능을 담당한다.C++로 구현이 가능하지만 BP가 더 생산적이다.게임플레이 이펙트에서 자동으로 게임플레이 큐와 연동할 수 있도록 제공하고 있다.게임플레이 큐의 재생은 GameplayCueManage가 관리한다.게임플레이 태그를 사용해 쉽게 발동시킬 수 있다.이때 반드시 GameplayCure로 시작하는 게임플레이 태그를 사용해야한다.두 종류의 게임플레이 큐가 있다.- 스태틱 게임플레이 큐 : 일시적으로 발생하는 특수효과에 사용 . Execute 이벤트 발동- 액터 게임플레이 큐 : 일정 기간동안 발생하는 특수효과에 사용. Add/Remove 이벤트 발동 공격 파티클 재생이제 Gameplay Cue를 활용하여 공격 시 파티클 재.. 2025. 8. 27. 기간형 게임플레이 이펙트 & 무적 구현 & 스택형 버프 - GAS 기간형 게임플레이 이펙트Instant 탕비이 아닌 게임플레이 이펙트를 의미한다.- Duration : 지정한 시간 동안 동작하는 게임플레이 이펙트- Infinite : 명시적으로 종료하지 않으면 계속 동작하는 게임플레이 이펙트기간형 게임플레이 이펙트는 유효 기간동안 태그와 같은 상태를 가질 수 있다.기간형 게임플레이 이펙트는 중첩(Stack)이 가능하도록 설정이 가능하다.모디파이어를 설정하지 않아도 다양하게 활용 가능하다.인스턴스는 Base값을 변경하지만 기간형은 Current값을 변경하고 원래대로 Current값을 Base로 돌려놓는다.하지만 Period를 사용하면 Base값을 변경 가능하다 -> GAS글 중 상자 구현에 설명이 되어있음.이 기간형 게임플레이 이펙트를 활용하여 다양한 스킬, 버프 효과를.. 2025. 8. 26. Attribute Set을 활용한 사망 처리 - GAS ...DECLARE_DYNAMIC_MULTICAST_DELEGATE(FOutOfHealthDeleget);UCLASS()class ARENABATTLEGAS_API UABCharacterAttributeSet : public UAttributeSet{ ... UPROPERTY() mutable FOutOfHealthDeleget OnOutOfHealth; ... bool bOutOfHealth = false;};UABCharacterAttributeSet에 다음과 같이 Delegate를 선언하고 이미 한번 죽었는지 체크하는 bOutOfHealth를 추가한다.여기서 mutable이 선언자가 있는데 mutable은 const 객체 안에서도 해당 변수는 수정이 가능하다는 의미이다. 이는 ASC->GetSet을.. 2025. 8. 25. Attribute Set UI로 표시 - GAS WidgetComponent와 UserWidget 그리고 HpBarWidget을 제작한다.코드는 아래와 같다. (헤더 제외)#include "UI/ABGASWidgetComponent.h"#include "UI/ABGASUserWidget.h"void UABGASWidgetComponent::InitWidget(){ Super::InitWidget(); //이 컴포넌트가 관리하는 Widget을 받아서 Cast한다. UABGASUserWidget* GASUserWidget = Cast(GetWidget()); if (GASUserWidget) { GASUserWidget->SetAbilitySystemComponent(GetOwner()); }} #include "UI/ABGASUserWidget.h"#.. 2025. 8. 25. EffectContext & Spec Handle / 캐릭터 레벨 스탯 변화 - GAS ASC에서 GE를 발동시켜서 초기 스탯을 GE로 지정하게 할 수 있다. 레벨별로 사용할 Stat을 Data Table에 넣어준다. 이렇게 Blueprint를 제작하면 된다.Override를 사용해서 값을 덮어쓰도록 하고Scalable Float에서 CharacterStatTable을 넣고 어떤 열을 사용할 것인지 넣으면 Preview가 나온다.옆의 1.0의 값은 몇배로 할 것이냐이다. 즉, 1.0배 그대로 적용한다는 의미이다. 이제 이 GE를 시작할 때 적용해보자.이펙트를 발동시키는 코드가 복잡해서 어떻게 동작하는지 확인해보자.게임 플레이 이펙트의 생성 과정게임플레이 이펙트 컨텍스트와 게임플레이 이펙트 스펙을 통해 생성가능하다.게임플레이 이펙트 컨텍스트 GE에서 계산에 필요한 데이터를 담은 객체- 가해.. 2025. 8. 25. 이전 1 2 3 4 ··· 23 다음