๋ฌธ์
๋ฉํฐํ๋ ์ด ๊ธฐ๋ฐ GAS ๊ตฌ์กฐ์์ ์ฝค๋ณด ๊ณต๊ฒฉ๊ณผ ๋ฐฉ์ด ์์คํ
์ ์คํ๋ฏธ๋๋ฅผ ์ฐ๋ํ๋ ๊ณผ์ ์์ ๋ค์๊ณผ ๊ฐ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
- ์ฝค๋ณด ๊ณต๊ฒฉ ์ ์คํ๋ฏธ๋ ์๋ชจ๊ฐ ์ ์ฉ๋์ง ์์
- GameplayEffect ์ ์ฉ ๋ก๊ทธ๋ ์ฐํ์ง๋ง ์ค์ Stamina ๊ฐ์ ๊ฐ์ํ์ง ์์
- Block / Attack / Regen์ด ์๋ก ๊ฐ์ญํ์ฌ ๋ฆฌ์ ์ด ๋น์ ์ ๋์
- ์คํ๋ฏธ๋ ๋ก์ง์ด ์ฌ๋ฌ ํด๋์ค์ ๋ถ์ฐ๋์ด ๊ตฌ์กฐ๊ฐ ๋ถ๋ช
ํํจ
๋ถ์
GameplayEffect ์ ์ฉ ๋ฌธ์ ๊ตฌ์กฐ
| ๋จ๊ณ | ์ํ | ์ค์ ์๋ฏธ |
|---|
| Ability ์คํ | ์ ์ | Ability ๋ก์ง ๋ฌธ์ ์๋ |
| GE Apply ๋ก๊ทธ | ์ ์ | Spec ์์ฑ ๋ฐ ์ ์ฉ ์ฑ๊ณต |
| Attribute ๋ณํ | ์์ | GE ๋ด๋ถ ์ค์ ๋ฌธ์ |
๊ฒฐ๋ก : ๋ก์ง ๋ฌธ์ ๊ฐ ์๋๋ผ GE ์ค์ ๋ฌธ์
SetByCaller ๋ฌธ์ ๊ตฌ์กฐ
[์ฝ๋] Data.StaminaCost
[GE ์์
] Data.Stamina.Cost
| ๋ฌธ์ | ๊ฒฐ๊ณผ |
|---|
| ํ๊ทธ ๋ถ์ผ์น | SetByCaller ๊ฐ = 0 |
| ์ต์ข
๊ฒฐ๊ณผ | Stamina ๋ณํ ์์ |
GAS์์ ๊ฐ์ฅ ํํ ํจ์
GameplayEffect ์ฌ๋ฐ๋ฅธ ๊ตฌ์กฐ
| ํญ๋ชฉ | ์ค์ |
|---|
| Duration Policy | Instant |
| Attribute | Stamina |
| Modifier Op | Add |
| Magnitude | SetByCaller(Data.StaminaCost) |
์ฑ
์ ๋ถ๋ฆฌ ๋ฌธ์ (Before / After)
Before (๋ฌธ์ ๊ตฌ์กฐ)
Character
โโ ์ผ๋ถ ์คํ๋ฏธ๋ ์ฒ๋ฆฌ
ComboManager
โโ ์ผ๋ถ ์ฒ๋ฆฌ
Ability
โโ ์ผ๋ถ ์ฒ๋ฆฌ
์ฑ
์์ด ๋ถ์ฐ โ ๋๋ฒ๊น
์ด๋ ค์
After (๊ฐ์ ๊ตฌ์กฐ)
Character
โโ Ability ์คํ ์ง์
์
Ability (GA_Block / GA_Attack)
โโ ๋น์ฉ ๊ณ์ฐ
โโ GE ์ ์ฉ
GameplayEffect
โโ ์ค์ ์์น ๋ณ๊ฒฝ
AttributeSet
โโ Stamina ๊ฐ ๋ณด์
ComboManager
โโ ์ฝค๋ณด ์ธ๋ฑ์ค ๊ด๋ฆฌ
์ญํ ๋ช
ํํ
ํด๊ฒฐ
์ ์ฒด ์์คํ
ํ๋ฆ (๋ค์ด์ด๊ทธ๋จ)
[์
๋ ฅ]
โ
ComboManager
โ (ํ์ฌ ์ฝค๋ณด ๋จ๊ณ ์ ๊ณต)
GA_ComboAttack
โ
CanActivateAbility
โ (์คํ๋ฏธ๋ ์ฒดํฌ)
ActivateAbility
โ
GameplayEffect (Cost ์ ์ฉ)
โ
AttributeSet (Stamina ๊ฐ์)
์ฝค๋ณด ์คํ๋ฏธ๋ ์ฒ๋ฆฌ ๊ตฌ์กฐ
| ๋จ๊ณ | ์ญํ |
|---|
| ComboManager | ํ์ฌ ์ฝค๋ณด index ์ ๊ณต |
| Ability | StaminaCost ๊ณ์ฐ |
| CanActivate | ์ฌ์ฉ ๊ฐ๋ฅ ์ฌ๋ถ ๊ฒ์ฌ |
| Activate | GE ์ ์ฉ |
| AttributeSet | ์ค์ ๊ฐ ๋ณ๊ฒฝ |
Block / Attack / Regen ๊ตฌ์กฐ ๋น๊ต
๊ธฐ์กด ๋ฐฉ์ (๋ฌธ์ )
| ์์คํ
| ๋ฐฉ์ |
|---|
| Block | Regen ์ ๊ฑฐ |
| Attack | Regen ์ํฅ ์์ |
| Regen | ์๋ ์ ์ฉ |
์ํ ๊ผฌ์ ๋ฐ์
๊ฐ์ ๋ฐฉ์ (Tag ๊ธฐ๋ฐ)
| ์์คํ
| ๋ฐฉ์ |
|---|
| Regen | BeginPlay์์ 1ํ ์ ์ฉ |
| Block | State.Blocking ํ๊ทธ |
| Attack | State.Attacking ํ๊ทธ |
| Regen ์ ์ด | Tag ์กฐ๊ฑด์ผ๋ก ์๋ ์ค์ง |
ํ๊ทธ ๊ธฐ๋ฐ ์ ์ด ๊ตฌ์กฐ
State.Blocking
State.Attacking
Regen GE ๋์ ์กฐ๊ฑด
| ์ํ | ๊ฒฐ๊ณผ |
|---|
| Blocking | Regen OFF |
| Attacking | Regen OFF |
| Idle | Regen ON |
Block Ability ์ญํ ์ ๋ฆฌ
| ์์ | ์ฒ๋ฆฌ |
|---|
| ์์ | DefenseBuff ์ ์ฉ |
| ์์ | StaminaDrain ์ ์ฉ |
| ์ข
๋ฃ | Buff ์ ๊ฑฐ |
| ์ข
๋ฃ | Drain ์ ๊ฑฐ |
| ๋ฆฌ์ | ๊ฑด๋๋ฆฌ์ง ์์ |
Combo Ability ์ญํ ์ ๋ฆฌ
| ๋จ๊ณ | ์ฒ๋ฆฌ |
|---|
| ์์ | ComboData ์กฐํ |
| ๊ฒ์ฌ | Stamina ์ฒดํฌ |
| ์คํ | Cost GE ์ ์ฉ |
| ์คํ | Montage ์ฌ์ |
| ์ข
๋ฃ | Ability ์ข
๋ฃ |
ํต์ฌ ์ฝ๋ ๊ตฌ์กฐ
SpecHandle.Data->SetSetByCallerMagnitude(
FGameplayTag::RequestGameplayTag(FName("Data.StaminaCost")),
-MyComboData->StaminaCost
);
๋๋ฒ๊น
์ฒดํฌ๋ฆฌ์คํธ
| ์ฒดํฌ ํญ๋ชฉ | ๋ฐฉ๋ฒ |
|---|
| GE ์ ์ฉ ์ฌ๋ถ | Apply ๋ก๊ทธ |
| ์ค์ ๊ฐ ๋ณํ | AttributeSet ๋ก๊ทธ |
| SetByCaller ๊ฐ | Tag ์ถ๋ ฅ |
| GE ์ค์ ํ์ธ | ์์
Modifier ํ์ธ |
๋๋ฒ๊น
ํ๋ฆ
1. GE ์ ์ฉ ๋ก๊ทธ ํ์ธ
2. AttributeSet ๊ฐ ๋ณํ ๋ก๊ทธ ํ์ธ
3. ๊ฐ์ด ์ ๋ณํ๋ฉด โ SetByCaller ํ์ธ
4. ๊ทธ๋๋ ์ ๋๋ฉด โ GE Modifier ํ์ธ
ํต์ฌ ์ธ์ฌ์ดํธ
- GAS์์ โ์ ์ฉ๋จโ๊ณผ โ๊ฐ ๋ณ๊ฒฝ๋จโ์ ๋ค๋ฅธ ๊ฐ๋
์ด๋ค
- SetByCaller๋ Tag ํ๋ ํ๋ฆฌ๋ฉด ์ ์ฒด ์์คํ
์ด ๋ฌดํจํ๋๋ค
- ์คํ๋ฏธ๋๋ Ability๊ฐ ์๋๋ผ GameplayEffect๊ฐ ์ฑ
์์ ธ์ผ ํ๋ค
- ์ํ ์ ์ด๋ ์ฝ๋๋ณด๋ค Tag ๊ธฐ๋ฐ์ด ํจ์ฌ ์์ ์ ์ด๋ค
- ์์คํ
์ด ์ปค์ง์๋ก ์ฑ
์ ๋ถ๋ฆฌ ๊ตฌ์กฐ๊ฐ ๋๋ฒ๊น
๋์ด๋๋ฅผ ๊ฒฐ์ ํ๋ค
์ค๋์ ์ ๋ฆฌ
- GAS ์คํ๋ฏธ๋ ์์คํ
์ ๊ฐ์ ์ง์ ์ฐจ๊ฐํ๋ ๋ฐฉ์์ด ์๋๋ผ GameplayEffect + Tag ๊ธฐ๋ฐ์ผ๋ก ํตํฉํ๋ ๊ฒ์ด ํต์ฌ์ด๋ฉฐ,
๊ฐ ํ๋์ ๋น์ฉ ๊ณ์ฐ๋ง ๋ด๋นํ๊ณ ์ค์ ์ ์ฉ์ GE๊ฐ ๋งก๋๋ก ๋ถ๋ฆฌํจ์ผ๋ก์จ ์ถฉ๋ ์์ด ํ์ฅ ๊ฐ๋ฅํ๊ณ ๋๋ฒ๊น
์ด ์ฌ์ด ๊ตฌ์กฐ๋ก ๊ฐ์ ํ ์ ์์๋ค.