KillKiss Help

Set Attribute

Player Character, Enemy Character에 속성값을 초기화 하는 과정입니다.

개요

GameplayEffect를 통해 PrimaryAttributes(주 스텟) 에 대한 초기화 진행

구조

  • Character

    • ASC

      • AttributeSet(AS)

    • DefaultPrimaryAttributes

적용 과정

Progress

  1. StartUp Data를 보관할 데이터 에셋 생성

  2. Primary, Secondary, Vital 정보를 담는 GameplayEffect를 생성

  3. PossesedBy 시점서 해당 GameplayEffect 적용하여 초기화 실시

코드 변경사항

UPROPERTY(EditDefaultsOnly, Category = "StartUpData") TArray<TSubclassOf<UGameplayEffect>> StartUpGameplayEffects;
void UDataAsset_StartupDataBase::GiveToAbilitySystemComponent(UKKAbilitySystemComponent* InASCToGive, int32 ApplyLevel){ // 중략 if (!StartUpGameplayEffects.IsEmpty()) { for (const TSubclassOf<UGameplayEffect>& EffectClass : StartUpGameplayEffects) { if (!EffectClass) { continue; } FGameplayEffectContextHandle EffectContextHandle = InASCToGive->MakeEffectContext(); const AKKCharacterBase* Character = Cast<AKKCharacterBase>(InASCToGive->GetAvatarActor()); EffectContextHandle.AddSourceObject(Character); const UGameplayEffect* EffectCDO = EffectClass->GetDefaultObject<UGameplayEffect>(); InASCToGive->ApplyGameplayEffectToSelf(EffectCDO, ApplyLevel, EffectContextHandle); } } }
void AKKPlayerCharacter::PossessedBy(AController* NewController) { Super::PossessedBy(NewController); InitAbilityActorInfo(); } void AKKPlayerCharacter::InitAbilityActorInfo(){ // 중략 if (UDataAsset_StartupDataBase* LoadedData = CharacterStartUpData.LoadSynchronous()) { if (UKKAbilitySystemComponent* KKAbilitySystemComponent = Cast<UKKAbilitySystemComponent>(AbilitySystemComponent)) { LoadedData->GiveToAbilitySystemComponent(KKAbilitySystemComponent, 1.f); } } }

스텟 별 설명

주 스텟

Primary Attribute

초기값

Strength

12

Intelligence

9

Luck

5

DefensePower

7

Vigor

9

보조 스텟

Secondary Attribute

계산식

설명

Armor

DefensePower * 3 + 5

공격을 막아 낼 확률입니다.

ArmorPenetration

Strength * 0.8 + 2

방어구 관통력은 상대의 방어력을 무시하고 데미지를 줄 확률을 뜻합니다.

CriticalHitChance

Luck * 0.5 + 3

치명타 확률입니다. 행운에 따라 상승하며 최소 3%를 보장합니다.

CriticalHitDamage

Luck * 5 + 200

치명타 피해량은 기본적으로 2배의 데미지를 주나 행운에 따라 상승합니다.

CriticalHitResistance

Armor * 0.5 + 5

치명타 저항은 Armor 값에 비례하며, 기본적으로 5%확률을 보장해줍니다.

HealthRegeneration

Vigor * 0.2 + 2

체력 재생은 Vigor에 비례합니다.

MaxHealth

Vigor * 10 + Strength * 2 + Level * 10

최대 체력은 Vigor에 주로 영향을 받고, Strength에 어느정도 영향을받습니다. 레벨이 오를때마다 10씩 상승합니다.

ManaRegeneration

Intelligence * 0.2 + 1

마나 재생은 Intelligence에 비례합니다.

MaxMana

Intelligence * 10 + Level * 5

최대 마나는 Intelligence에 비례합니다, 레벨당 5씩 오릅니다.

해당 값들은 게임의 밸런스에 의해 일부 조정 될 수 있습니다.

트러블 슈팅 내역

Last modified: 12 December 2024