인프런 커뮤니티 질문&답변

강건희님의 프로필 이미지

작성한 질문수

이득우의 언리얼 프로그래밍 Part4 - 게임플레이 어빌리티 시스템

캐릭터의 기본 설정 값을 Attribute와 연동

24.07.05 23:57 작성

·

81

0

캐릭터에서 기본적으로 제공되는 MaxWalkSpeed나 JumpZVelocity같은 값들을 AttributeSet과 연동하여 사용할 수 있는 방법이 있을까요?

이런 값들도 GAS를 통해서 조정할 수 있다면 좋을 것 같아 질문 남깁니다.

답변 2

1

이득우님의 프로필 이미지
이득우
지식공유자

2024. 07. 11. 05:56

안녕하세요. 출장중이라 답신이 늦었습니다.
강의에서 설명하는 AttributeSet 클래스의 PostGameplayEffectExecute 혹은 PostAttributeChange 함수를 사용해 관련 어트리뷰트 변동시 처리하는 로직을 만들면 될 것 같습니다.
다만 위 함수는 모든 어트리뷰트에 대해 동작하기 때문에 특정 어트리뷰트에 대해서만 짤막하게 처리하고 싶다면 GameplayAttributeValueChangeDelegate 델리게이트를 사용해 연동해주면 더 간편하게 제작 가능할 것 같습니다.
아래와 같은 형식의 델리게이트 함수를 제작합니다.

void AABGASCharacterPlayer::HandleHealthChanged(const FOnAttributeChangeData& ChangeData)
{
//ChangeData.OldValue, ChangeData.NewValue
}

그리고나서 ASC 초기화시 어트리뷰트에 이를 연동해주면 해당 어트리뷰트가 변할 때마다 델리게이트 콜백함수에서 변하기 이전 값과 새롭게 변한 값을 확인할 수 있으므로 NewValue값의 범위가 유효한지 체크하고, 캐릭터무브먼트컴포넌트에 반영해주면 될 것 같습니다.

ASC->GetGameplayAttributeValueChangeDelegate(UABCharacterAttributeSet::GetHealthAttribute()).AddUObject(this, &ThisClass::OnHealthChanged);  
강건희님의 프로필 이미지
강건희
질문자

2024. 07. 19. 16:04

언리얼에서 연동하는 기능을 따로 제공하지는 않고 델리게이트를 이용해서 자동화 처리하는 방식인가보네요. 감사합니다

0

인프런 AI 인턴님의 프로필 이미지

2024. 07. 08. 00:01

안녕하세요, 인프런 AI 인턴입니다.

죄송합니다만, 제공된 정보에는 UE4나 Unreal Engine에서의 게임플레이 어빌리티 시스템(GAS)에 관련된 내용이 없어 직접적인 답변을 드리기 어렵습니다.

Unreal Engine의 게임플레이 어빌리티 시스템은 게임 내에서 캐릭터의 능력치, 상태 효과, 스킬 시스템 등을 관리하는 데 사용됩니다. MaxWalkSpeed나 JumpZVelocity와 같은 캐릭터의 기본 설정 값들을 AttributeSet과 연동하여 사용하는 것은 가능합니다. AttributeSet은 GAS를 사용하여 캐립터의 다양한 능력치나 상태 값을 관리할 때 기본적으로 활용되는 클래스 중 하나입니다. 이를 통해 게임 내 캐릭터의 동작이나 상태에 변화를 주는 로직을 구현할 수 있습니다.

UE4의 공식 문서나 관련 강의, 커뮤니티 포럼에서 더 구체적인 방법을 찾아보는 것을 추천드립니다. Unreal Engine 공식 문서나 튜토리얼은 Unreal Engine의 기능을 학습하는 데에 매우 유용한 자료입니다.

원하는 답변을 찾지 못하셨나요? 그럼 우측 하단의 ‘문의하기’ 에서 직접 문의해주세요. 최대한 빠르게 답변드리도록 하겠습니다!