플레이어 캐릭터에 AttributeSet 생성
플레이어 캐릭터의 경우 캐릭터에 대한 정보를 플레이어 캐릭터에 직접적으로 생성하지 않고(멀티플레이이를 고려)
PlayerState 클래스에 생성한다
PlayerState 헤더파일
#include "CoreMinimal.h"
#include "GameFramework/PlayerState.h"
#include "AbilitySystemInterface.h"
#include "PPGASPlayerState.generated.h"
/**
*
*/
UCLASS()
class PROJECT_P_API APPGASPlayerState : public APlayerState, public IAbilitySystemInterface
{
GENERATED_BODY()
public:
APPGASPlayerState();
virtual UAbilitySystemComponent* GetAbilitySystemComponent() const override;
protected:
UPROPERTY(EditAnywhere, Category = GAS)
TObjectPtr<class UAbilitySystemComponent> ASC;
UPROPERTY(VisibleAnywhere, Category = AttributeSet)
TObjectPtr<class UPPCharacterAttributeSet> AttributeSet;
};
- UPROPERTY(VisibleAnywhere, Category = AttributeSet)
TObjectPtr<class UPPCharacterAttributeSet> AttributeSet;- 어트리뷰트셋 생성
Cpp파일
APPGASPlayerState::APPGASPlayerState()
{
ASC = CreateDefaultSubobject<UAbilitySystemComponent>(TEXT("ASC"));
AttributeSet = CreateDefaultSubobject<UPPCharacterAttributeSet>(TEXT("AttributeSet"));
}
생성자에서 CreateDefaultSubobject 함수로 인스턴스를 생성한다
AttributeSet 의 경우 별도로 ASC에 추가하지 않아도 자동으로 ASC에 등록이 된다
(ASC의 코드에서 AttributeSet을 초기화함)
몬스터에 AttributeSet 생성
직접 조종을 하지 않는 몬스터에 경우 몬스터 클래스에 직접 어트리뷰트셋을 생성한다
몬스터 클래스의 상위 클래스인 APPGASCharacterNonPlayer에 생성을 하였음
APPGASCharacterNonPlayer 헤더파일
#include "CoreMinimal.h"
#include "Character/PPCharacterBase.h"
#include "AbilitySystemInterface.h"
#include "PPGASCharacterNonPlayer.generated.h"
/**
*
*/
UCLASS()
class PROJECT_P_API APPGASCharacterNonPlayer : public APPCharacterBase, public IAbilitySystemInterface
{
GENERATED_BODY()
public:
APPGASCharacterNonPlayer();
virtual UAbilitySystemComponent* GetAbilitySystemComponent() const override;
virtual void PossessedBy(AController* NewController) override;
protected:
UPROPERTY(EditAnywhere, Category = GAS)
TObjectPtr<class UAbilitySystemComponent> ASC;
UPROPERTY(VisibleAnywhere, Category = AttributeSet)
TObjectPtr<class UPPCharacterAttributeSet> AttributeSet;
};
- UPROPERTY(VisibleAnywhere, Category = AttributeSet)
TObjectPtr<class UPPCharacterAttributeSet> AttributeSet;- 어트리뷰트셋 생성
Cpp 파일
APPGASCharacterNonPlayer::APPGASCharacterNonPlayer()
{
ASC = CreateDefaultSubobject<UAbilitySystemComponent>(TEXT("ASC"));
AttributeSet = CreateDefaultSubobject<UPPCharacterAttributeSet>(TEXT("AttributeSet"));
}
생성자에서 어트리뷰트셋의 인스턴스를 생성해준다
'포트폴리오 제작 > Project_P' 카테고리의 다른 글
Project_P 체력바 UI 생성 (0) | 2024.10.21 |
---|---|
Project_P GE를 사용하여 데미지 전달 및 체력 감소 (0) | 2024.10.18 |
Project_P AttributeSet을 사용하여 스탯 만들기 (0) | 2024.10.16 |
Project_P 캐릭터에 구현된 Move함수 실행시 GameplayTag 부여 (0) | 2024.10.04 |
Project_P 공격 판정 구현(4) TA 타겟액터 구현 (0) | 2024.09.11 |