UE5/GameplayEffect

    [UE5] GE Quiz

    [UE5] GE Quiz

    1. 속성에 직접접근안하고 GE 사용하는이유2.3.

    [UE5] 커브테이블 만들기 // GE 하드코딩 해결, 포션레벨별 회복량 만들기

    [UE5] 커브테이블 만들기 // GE 하드코딩 해결, 포션레벨별 회복량 만들기

    1. 문제 : 마나먹으면 25체력+ == 하드코딩* 해결 : 커브테이블 2. 만들기3. 삼각형버튼(행추가) => 레벨당 힐량 설정 4. GE에서 지정Magnitude 값 * 커브테이블값 == 최종값이 되는거임 5. GE.h에서 레벨저장변수 만들고GE.cpp에서 사용하면됨.레벨은 BP에서 얼마든지 수정가능함. 6. 실습포션4개만들고, 레벨설정(소수도가능) 7. 마나포션 커브만들기마나커브만들고GE_Mana에서 적용하면됨 8. 결과

    [UE5] PostGameplayEffect // Data Getter 구현, Qualifier 'const' is only allowed on non-static member functions 오류해결

    [UE5] PostGameplayEffect // Data Getter 구현, Qualifier 'const' is only allowed on non-static member functions 오류해결

    0. Data 내부 접근이 안되는 문제발생*해결 : f12를 눌러 정의부로이동 -> 원본헤더파일을 인클루드!!#include "GameplayEffectExtension.h"  1. Data 안에 수많은 정보들이 있는걸 볼수있다.디버깅, 브레이크포인트를 걸어보면void UAuraAttributeSet::PostGameplayEffectExecute(const FGameplayEffectModCallbackData& Data){ Super::PostGameplayEffectExecute(Data); 2. Target, Source의 Data들을 채워넣는 실습void UAuraAttributeSet::PostGameplayEffectExecute(const FGameplayEffectModCallbackDa..

    [UE5] PreAttributeChange // 체력,마나 min-max 제한하는법

    [UE5] PreAttributeChange // 체력,마나 min-max 제한하는법

    1. Pre : 속성이 변하기전에 자동 호출되는 함수Post : 속성이 변한후 자동 호출되는 함수 2. 구현AS에서 구현함.속성이 바뀌기 전에 자동실행되어, 범위를 제한함void UAuraAttributeSet::PreAttributeChange(const FGameplayAttribute& Attribute, float& NewValue){ Super::PreAttributeChange(Attribute, NewValue); if (Attribute == GetHealthAttribute()) //속성이 체력인경우 { NewValue = FMath::Clamp(NewValue, 0.f, GetMaxHealth()); //new val을 범위제한함(0~최대체력) } if (Attribute == Get..

    [UE5] Infinite이펙트 만들기 // 불에 닿으면 피감소 구현

    [UE5] Infinite이펙트 만들기 // 불에 닿으면 피감소 구현

    1. EffectActor에 변수추가 의존성주입은 BP에서함!UPROPERTY(EditAnywhere,BlueprintReadOnly, Category="Applied Effects") TSubclassOf InfiniteGameplayEffectClass; 2.  액터상속받은 FireArea만들고GE상속받은 FireArea 만듬2.1 BP에 나이아가라 이펙트 달아주기. 3. GE가서 주기=1초, 체력-5씩 깍이도록 설정, 기간=무한 4. BP에서 내가만든 GE로 의존성 주입! 5. Test*문제 : 불에서 나가도 체력이 감소함* 해결 : 기간:무한옵션에서는, 해당효과를 직접 제거해줘야함! 6. 정책설정을 위한 리팩토링UENUM()enum class EEffectApplicationPolicy{ Appl..

    [UE5] Stacking // 포션을 한번에 여러개 먹을시 제한설정

    [UE5] Stacking // 포션을 한번에 여러개 먹을시 제한설정

    1. GE_크리스탈마나 에서 스태킹 None일경우크리스탈3개를 먹어 , 마나가 50->80이 되었다. 2.옵션설정후, 스택2개로 제한한경우3개를 먹었지만, 2개만적용되어 마나가 50->70이 되었다! 3. 개념 Aggregate by Source소스별로 집계하여, Stack제한을 넘은것은 무시한다.밑의 새로운소스(게임플레이 Effect를 적용하는 또다른 소스가 있다고 가정)에서 타겟에 접근하는것은 허용된다. 4. Aggregate by Target타겟에 접근한것이 2개이상이면, 나머지는 무시함! 5. 무한적용 만드는방법이렇게두면, 스택이 만료되면 기간을 새로고치므로, 기간이 무한대가 된다.크리스탈 하나먹으면 무한대로 마나가 오름 6. 우리는 Target 1개 제한으로 두도록 하자.

    [UE5] 이펙트 종류 // 즉시 vs (기간,무한) vs 주기, 0.1초마다 마나1씩증가구현 2초동안

    [UE5] 이펙트 종류 // 즉시 vs (기간,무한) vs 주기, 0.1초마다 마나1씩증가구현 2초동안

    1.즉시 : Base 값을 바꿈(기간,무한) : 현재값을 바꿈, 종료후 기본값으로 돌아감 //무한은 내가 돌아가라고 하면 돌아감Periodic(주기) : 기본값을 바꿈 2. 예시주기 : 0.12초동안1만큼 값변화=> 0.1(peroid)초마다 체력이 1(magn)씩 증가함. 2초(duration)동안 3. 결과 4. 옵션 옵션킨경우 : 바로 실행 //체력이 50->71이 됨옵션안킴 : 0.1초후 실행 //체력이 50->70이 됨 5. 마나크리스탈 실습i) EffectActor 상속받은 크리스탈만들고, 매쉬달고, 콜리전달고, 머테리얼 바꾼다ii)이벤트 그래프에서 오버랩 연결 && 의존성주입(내가만든 GE_CrystalMana)iii) GE_CrystalMana 구현주기 : 0.1로 설정0.1초마다 마나1씩..

    [UE5] 지속 이펙트 구현

    [UE5] 지속 이펙트 구현

    1. GE_Crystal 만들고 설정(지속시간, 변경속성, 변경 값) 2. 이펙트액터 > 새로운 클래스만들기BP에서 의존성 주입할거임UPROPERTY(EditAnywhere,BlueprintReadOnly, Category="Applied Effects") TSubclassOf DurationGameplayEffectClass; 3. BP_크리스탈 만들기 (이펙트액터상속받은)매쉬달기, 캡슐콜리전달기뷰포트 > top,left,front,back 보면서 위치맞추기매쉬 : 노콜리전 설정 4.  함수연결, 의존성주입(클래스 : 위에서만든 GE_Crystal) 5. 결과크리스탈을 먹으면 2초간 최대체력이 100 증가함!