- 
          
          [UE5 RPG] 4. ๊ฑท๊ธฐ, ์ ํ ์ด๋ ์กฐ์ : GameplayAbilities, ์ ํ Animation BlueprintUnrealEngine/SomedayProject 2025. 11. 1. 14:21
๐ Someday Proejct ๊ฐ๋ฐ์ผ์ง ์๋ฆฌ์ฆ
์ ๋๋ฉ์ด์ ์ Ablitiy ๋ฅผ ์ฐ๊ฒฐํด์ ์ด๋ค๋๋ฏํ๋ค
๋์ค์ ์ํด ๋ฏธ๋ฆฌ ์ธํ ํ๊ณ ๋์ด๊ฐ๊ธฐ
โ๏ธ GameplayAbilities ๋ฅผ ์ฐ๋ ค๋ฉด
SomedayProject.Build.cs์ PublicDependencyModuleNames ์ ์ถ๊ฐํด์ค์ผ ์ธ์๋จPublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "EnhancedInput", "GameplayAbilities" });
EXEC : warning : D:\UEProject\SomedayProject\SomedayProject.uproject does not list plugin 'GameplayAbilities' as a dependency, but module 'SomedayProject' depends on 'GameplayAbilities'.์๋ฌ๊ฐ ๋จ๊ธดํ๋๋ฐ. ํ๋ฌ๊ทธ์ธ์ ์ง์  ๋ฃ์ด์ค์ผํ๋๋ฏ ์คํ๋ ์๋จ- Plugin ์ ๋จผ์  ์๋ํฐ์์ ๋ฃ์ด์ฃผ๊ณ ์คํํด์ผํ ๋ฏ → ์ํ๊ณ .uproject ์์ ๋ฃ์ผ๋ฉด ๋๋ค
 
"Plugins": [ { "Name": "GameplayAbilities", "Enabled": true }, ]AbilityTags ๋ฅผ ํ์ฉํ ์ ๋๋ฉ์ด์  ์ ์ด
- Map ์์ bool ๋ณ์๋ฅผ Tag๋ ๋งค์นญํด์ ์ ๋๋ฉ์ด์ ์ ์ ์ดํ๋๋ก ํ์
 
Project Setting ์์ GameplayTags ์ Movement ๊ด๋ จ๋ ํ๊ทธ๋ค์ ์ถ๊ฐํด์ค๋ค

๊ทธ๋ผ ์ด๋ฐ์์ผ๋ก ๋งค์นญํ ์ ์์

if (UCharacterMovementComponent* TempComp = Cast< UCharacterMovementComponent>(OwningActor->GetComponentByClass(MoveComp->GetClass()))) { MoveComp = TempComp; }์ด๋ ๊ฒ ์ฝ๋๋ฅผ ์งฐ๋๋ ์๋ํฐ ์ผ์๋ง์ MoveComp ์๋ค๊ณ ์๋ฌ๊ฐ ๋๊ธฐ์์
→ MoveComp
NativeInitializeAnimation์ ํธ์ถ์๊ธฐ๋ ๋น ๋ฅด๋ค..→
AnimInstance::InitializeAnimation์์ ํธ์ถ๋๋๋ฐ ์๋ ๋ ๋๊ฐ๋ถ๋ฅด๋..@TODO NativeInintialize ์ ๋ํด ๋ ์์๋ณด๊ธฐ.. ์๋ํฐ๋ฅผ ์ผค๋ ์์๋๋๊ฒ๊ฐ๊ธดํ์ง๋ง ์ ํํ๊ฒ ๋ชจ๋ฅด๋๋ฏ
๐ถโ๏ธโก๏ธ๊ฑท๊ธฐ๋ถํฐ ๋ง๋ค๊ธฐ
์ผ๋จ ๊ฐ๋จํ๊ฒ Velocity์ ๋ํด์๋ง ์์ง์ด๋ ์ ๋๋ฉ์ด์ ์ ์ฐ๋ํด๋ณด๊ธฐ
void UHeroAnimInstance::NativeUpdateAnimation(float DeltaSeconds) { Super::NativeUpdateAnimation(DeltaSeconds); if (MoveComp) { Velocity = MoveComp->Velocity.Length(); bHasAcceleratrion = MoveComp->GetCurrentAcceleration().Length() > 0; bWalking = Velocity > 0 && bHasAcceleratrion; bFalling = MoveComp->IsFalling(); } }์๋์ ๊ฐ์๋๊น์ง ํ์ธํด์ Walking bool ๊ฐ์ ์ ์ดํ๋ค

ABP ์์ transition ์ Walking ๋ง ๊ฑธ์ด์ฃผ๋ฉด ๋จ

@TODO ๋ฌํ๊ฒ ์ ๋๋ฉ์ด์ ์ด ๋ ์๋ค.
@TODO ๋งจ์ฒ์์ ๋ก๋ฉํ ๋ ์ ๋๋ฉ์ด์  ๋๋ ์ด ์์. ํ๋ฒ์ ๋ก๋ฉํด๋์ผ๋ฉด ๋ฌธ์  ์์๋ฏํจ (๋ก๋ฉ์ฌ์ด ํ์ํ ์ด์ )
๐คธ ๋ค์์ ์ ํ
์ฌ์ค ๊ฐ์ฅ ์ด๋ ค์ธ ์ ํ
์ ํํ์ ๋์ ์ํ์ ๋์ฐฉํ์ ๋์ ์ํ๋ฅผ ํ๋์ฉ ๋๋๋๊ฒ ์ค์ํ ๋ฏํ๋ฐ

์ผ๋จ ABP๋ ์ด๋ ๊ฒ ๊ตฌ์ฑํ๊ณ
- JumpStart → JumpLoop๋ Jump ํธ๋ฆฌ๊ฑฐ ํ ์ ๋๋ฉ์ด์  ์คํ ์๊ฐ ๊ธฐ์ค์ผ๋ก ๋์ด๊ฐ๋ ๋ฐฉ๋ฒ
 - ๋ฐ๋ ๋ชจ์
๊ณผ ์ฐฉ์ง ๋ชจ์
์ด ๋ค๋ฅธ ๊ฒฝ์ฐ์, Apex ์ํ๋ฅผ ์ฌ์ฉํด์ ๋จ์ด์ง๋ ์๊ฐ์ ์ ๋๋ฉ์ด์
์ ์ ํํ๋ค (๋ชจ์
์ด ๊ฐ์์ ํจ์ค)
- Velocity, Gravity๋ฅผ ์ฌ์ฉํด์ ์ ์ ์ ๋ค๋ค๋ฅธ ๊ฒฝ์ฐ (Time ์ด 0.4๋ณด๋ค ์์ ๊ฒฝ์ฐ) Falling ์ผ๋ก ์ ํ
 
 - ์ ํ๊ฐ ๋๋ ์ํฉ์์ ๊ฑท๋ ์ค์ด์์ผ๋ฉด ๊ฑท๊ธฐ๋ก, ๋ฉ์ถฐ์์์ผ๋ฉด ๊ธฐ๋ณธ ์ํ ๋์๊ฐ์ผ ํ๋ฏ๋ก 2๊ฐ์ ํธ๋์ง์ ์ ๊ฑด๋ค
 

์ ๋๋ฉ์ด์ ๋ค์ Loop ๊บผ์ฃผ๋๊ฒ ์์ง๋ง๊ธฐ
โก๏ธJumpSelector→ JumpStart
์ ํ ์์์ Falling์ผ๋ก ํ๋จํ๋ค
โก๏ธJumpStart→ JumpLoop
Jump ํธ๋ฆฌ๊ฑฐ ํ ์ผ์  ์ ๋๋ฉ์ด์  ์คํ ์๊ฐ ๊ธฐ์ค
โก๏ธ JumpFalling → JumpEnd ํ๋จํ๊ธฐ
End ๊ฐ ๋์ ๋๋ง ์ฐฉ์ง ๋ชจ์ ์ ํ์ํ๊ณ ๊ทธ ์ดํ์ ์ด๋์ด ๊ฐ๋ฅํด์ผ ํจ
์ง๊ธ ์ํ๋ก๋ ๊ฐ์๊ธฐ ๊ณต์ค์์ Walk ์ํ๋ก ๋์ด๊ฐ๊ณ ๊ทธ๋ฐ๋ค

Jumping ์ด ๋๋ ๋ค์์, z ๊ฐ์๋๊ฐ ์์ ๋ ์ ํ๊ฐ ์ข ๋ฃ๋๊ฒ์ผ๋ก ํ๋จํ๊ธฐ๋ก ํจ
โก๏ธ JumpEnd → JumpEndSelector
์ฐฉ์ง ๋ชจ์ ์ ๋์ฐ๊ณ ๊ทธ ๋ค์์ ์ด๋ค ์ํ๋ก ๊ฐ์ผํ๋์ง๋ ํ๋จํด์ผ ํ๋๋ฐ (๋ฐ๋ก Walking ์ผ๋ก ๊ฐ์๋ ์์ผ๋๊น)
์ฐฉ์ง๋ชจ์ ์ด ๋๋ ๋ค์์ ํ๋จํ๊ณ ๋์ด๊ฐ์ผ ํ๋ฏ๋ก

์ฐฉ์ง ๋ชจ์  ์คํ ratio ๊ฐ ๋๋ฌ์ ๋ ํ๋จํ๊ธฐ๋ก ํ๋ค

์ฐฉ์ง๊น์ง ์ ๋๊ณ ์ดํ ๊ฑท๋๊ฒ๊น์ง ๋๋ค
๊ทผ๋ฐ ๊ณต์ค์์ ๋ฌํ๊ฒ ํ๋ฒ ๋ ๋ฐ๋ ๋์์ ํ๋ค
๊ทธ๋ฆฌ๊ณ ์ ํ ์์ํ ๋๋ ๋๋ฆฌ๊ณ
์ฐฉ์งํ๊ณ ๋ค์ ์์ํ ๋๋ ๋๋ฆฌ๋ค.. ๋ญ๊ฐ ๋ฌธ์ ์ผ๊น?
์ฐฉ์ง ๋ชจ์  ๋์ค๋๊ฒ ๋๋ ค์ ์ ํ ์์๋ ๋๋ฆฌ๊ฒ ๋๊ปด์ง๋๋ฏํ๋ค
๐ฏ ๋ค์์ ํ ๊ฒ
- ์ฐฉ์ง ๊ฐ์ ํ๊ธฐ
 - ์ ํฌ ์ ๋๋ฉ์ด์ 
 
์ด๋ฐ ๊ธฐ๋ณธ ์กฐ์์ด ์๊ทผ ๋ํ ์ผ ๊ฑด๋ค๊ฒ๋ ๋ง๊ณ ์ด๋ ต๋ค
728x90'UnrealEngine > SomedayProject' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ