์๊พธ ๋น์ทํ ๊ธ ์ฌ๋ ค์ ์ฃ์กํฉ๋๋ค...
์ง๋ 5์ผ๊ฐ ๋ง๋ค์๋ ์ฐ์ ๊ฐ๋จํ๊ฒ ํ์ด๋ณด๋๋ก ํ๊ฒ ์๋๋น.
ํด๋์ค ๋ชฉ๋ก์ ์์ ๊ฐ๊ณ ,
ProtoCharacter๋ ์ฒ์์ ๋ชจ๋ ๊ธฐ๋ฅ์ ์กํฐ์ ์ฑ์ฌ๋ฃ์ ํ๋กํ ํ์ ๊ฐ์ฒด์๊ณ ์ง๊ธ์ ํ๊ธฐ ์ํ์ ๋๋ค.ย
์ฐ์ DefaultCharacter ํด๋์ค๋ MovementManage... ์ปดํฌ๋ํธ์ CombatManage... ์ปดํฌ๋ํธ๋ก ๊ตฌ์ฑ๋ผ๊ณ ,
๋ฐํ์์ ์์ ๋กญ๊ฒ ํ์ฐฉ ๊ฐ๋ฅํ Weapon ํด๋์ค ์ธ์คํด์ค๋ ๊ฐ๊ณ ์์ต๋๋ค.
CombatSkill ํด๋์ค๋ ์คํฌ์ ์ดํํธ์ ์ ๋๋ฉ์ด์ ๋ชฝํ์ฃผ ์ ๋ณด, ๊ทธ๋ฆฌ๊ณ ๋ชฝํ์ฃผ์์ ์ฌ์ํ ์น์ ์ ๋ณด, ๋ค์ ์ฝค๋ณด์ ๋ํ ํ ์ด๋ธ๋ ๊ฐ๊ณ ์์ต๋๋ค.
์ด๊ฑด ํ์ !
์ ๋ ฅ์ ๋ค์๊ณผ ๊ฐ์ด ๊ตฌ์ฑํ์ต๋๋ค.
์ ๋ฐฉ, ์ธก๋ฐฉ ์ด๋, ํ์น, ์ ์กฐ์ , ๊ทธ๋ฆฌ๊ณ ์ฝ๊ณต๊ฒฉ, ๊ฐ๊ณต๊ฒฉ, ํน์ ๊ณต๊ฒฉ์ ๋๋ค. ์ธ ๊ฐ์ ์ปค๋งจ๋๋ ๋๊ฒจ์ง๋ Enum ํ๋๊ทธ๋ง ๋ค๋ฅผ ๋ฟ ๊ธฐ๋ณธ์ ์ผ๋ก ๊ฐ์ ๋งค์ปค๋์ฆ์ผ๋ก ์๋ํฉ๋๋ค.
์ ๋ ฅ๋ถํฐ ๊ณต๊ฒฉ ์ข ๋ฃ๊น์ง์ ํ์ดํ๋ผ์ธ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค
---- ๊ฒ์ํ๋ ์ด ํด๋์ค
being) ํ์ฌ ํ๋ ์ด์ด๋ _Idle State.
1) Weak ๊ณต๊ฒฉ ํค ์ ๋ ฅ
2) DefaultCharacter์ __COMBAT_KEY_WEAK()๊ฐ ํธ์ถ๋จ
3) __COMBAT_KEY_WEAK() ๋ DefaultCharacter::MovementManagerComponent์ __GET_COMMAND_STATE() ํธ์ถ,
ํ์ฌ Movement ์ํ์ ๋ฐ๋ฅธ ์ปค๋งจ๋๋ฅผ ๋ฐํ๋ฐ์ ECombatCommand::CE_Weak์ ์กฐํฉํจ.
์) ํ์ฌ ์ ๋ฐฉ ์ง์ฃผ ์ค -> ๋ฌด๋ธ๋จผํธ ์ปดํฌ๋ํธ๋ CE_Forward | CE_Sprint๋ฅผ ๋ฐํ
4) DefaultCharacter๋ ์ ๋ฌ๋ฐ์ ์ปค๋งจ๋๋ฅผ CombatManaegerComponent์ ๋๊น
5) CombatManagerComponent๋ ์ ๋ฌ๋ฐ์ ์ปค๋งจ๋๋ฅผ Key๋ก CommandTable์์ ํด๋นํ๋ CombatSkill ์ธ์คํด์ค๋ฅผ ์ฐพ์
6) ์ปด๋ฑ ์ปดํฌ๋ํธ๋ ์ฐพ์๋ธ CombatSkill ์ธ์คํด์ค๋ฅผ CurrentSkill ํ๋์ ์บ์ํ๊ณ , DefaultCharacter๋ฅผ _UsingSkill ์คํ ์ดํธ๋ก ์ ํ์ํด
๋ค๊ณ ์๋ Weapon ํด๋์ค๋ฅผ ํ์ฑํ์ํค๋ฉด ๊ฒ์ํ๋ ์ด ํด๋์ค์ ๊ณต๊ฒฉ ์ํ์ค๋ ์ข ๋ฃ.
6a) Weaponํด๋์ค๋ ํ์ฑํ๋๋ฉด Hitbox ํ๋กํผํฐ๋ฅผ ํ์ฑํ, ์ดํ ํ๊ฒฉ ๋์ ๊ฐ์ฒด์ ๋ฟ์ผ๋ฉด HitOccured()๋ฅผ ๋ฐํ์ํค๊ฒ ๋จ .... ํ์
---- ์ ๋๋ฉ์ด์ ๋ธ๋ฃจํ๋ฆฐํธย
7) ์ ๋๋ฉ์ด์ ์ DefaultCharacter์ State๊ฐ UsingSkill๋ก ๋ฐ๋ ๊ฒ์ ๊ฐ์ง
8) ์คํ ์ค์ธ Locomotion ์คํ ์ดํธ ๋จธ์ ์ ์ค์ง์ํค๊ณ , CombatComponent๋ก๋ถํฐ CurrentSkill ์ธ์คํด์ค๋ฅผ ์ป์ด,
ํด๋น ์คํฌ์ Montage๋ฅผ ์ฌ์์ํด.
โปโป ๋ง์ฝ ์ ์ด ํผ๊ฒฉ๋ ๊ฒฝ์ฐ
Base) Weapon์ Tick()๋ง๋ค Trace๋ฅผ ํธ์ถํจ.
a) ๋ง์ฝ Trace์ DefaultCharacter์ ํผ๊ฒฉ ์์๊ฐ ๋ฟ์ ๊ฒฝ์ฐ, Weapon์ HitOccur() ํธ์ถ.
b) Weapon์ ๋ด๋ถ์ ์ผ๋ก ๋๋ฏธ์ง์ ์คํด ์๊ฐ ๊ณ์ฐ์ ๋ง์น ๋ค, ํผ๊ฒฉ ์บ๋ฆญํฐ ์ธ์คํด์ค์ ์ปด๋ฑ ์ปดํฌ๋ํธ์ GetHit() ํจ์๋ฅผ ํธ์ถํด ์ด ๊ฐ์ ์ ๋ฌ.
c) ํผ๊ฒฉ ์ปด๋ฑ ์ปดํฌ๋ํธ๋ ํผ๊ฒฉ ์บ๋ฆญํฐ๋ฅผ _GettingHit State๋ก ์ ํ์ํด. ์ฌ๊ธฐ์ ํผ๊ฒฉ ์ํ์ค๋ ๋.
-- On AnimBP
d) ๋ธ๋ฃจํ๋ฆฐํธ๋ ํผ๊ฒฉ ์ํ๋ฅผ ๊ฐ์ง, ์์ ํ ๋ฐ์ ๊ฐ์ด Locomotion ์ ๋๋ฉ์ด์ ์ ๋ธ๋กํ๊ณ ์ ๋๋ฉ์ด์ ๋ชฝํ์ฃผ๋ฅผ ์คํ์ํด.
โปโป
---- ์ ๋๋ฉ์ด์ ๋ชฝํ์ฃผ
9) ์ฌ์๋ ๋ชฝํ์ฃผ๋ ์ฌ์์ด ์๋ฃ๋๋ฉด SkillFinish ๋ ธํฐํ์ด๋ฅผ ๋ฐ๋.
---- ์ ๋๋ฉ์ด์ ๋ธ๋ฃจํ๋ฆฐํธ
10) SkillFinish ๋ ธํฐํ์ด๊ฐ ํธ์ถ๋๋ฉด CombatComponent์ SkillFInished๋ฅผ ์๋ฆผ
---- ๊ฒ์ํ๋ ์ด ํด๋์ค
11) SkillFinished ๊ฐ ํธ์ถ๋๋ฉด CombatComponent๋ Owner ์บ๋ฆญํฐ ์ธ์คํด์ค์ ์ํ๋ฅผ _Idle ์คํ ์ดํธ๋ก ์ ํ์ํด.
end) ์ข ๋ฃ.
์ ๋๋ฉ์ด์ ๋ธ๋ฃจํ๋ฆฐํธ์ ๋๋ค. ์๋ณํ๊ธฐ ์ด๋ ต๊ฒ ์ง๋ง ์๋ฌดํผ ์ด๋ฐ ์์๋ก ์งํ๋ฉ๋๋ค
์ฐธ๊ณ ๋ก ์ผ๋ฐ์ ์ธ ์์ค ์ฝ๋๋ ๋ธ๋ฃจํ๋ฆฐํธ์์ ๋๊ธฐ์ ์ผ๋ก (PlayAnimation() ๋ฑ์ ํธ์ถ ํจ์) ์ ๋๋ฉ์ด์ ์ ํธ์ถํ๋ ๊ฑด ์๋ค๊ณ ์๊ฐํ๋ ๊ฒ ํธํฉ๋๋ค.
๋ณดํต AnimNotify๋ผ๋ ๊ธฐ๋ฅ์ ์ด์ฉํด ๋๋ถ๋ถ์ ์ํ ์ ํ์ ์ ์ดํ๊ฒ ๋๋๋ฐ, ๊ฒ์ํ๋ ์ด ๋ธ๋ฃจํ๋ฆฐํธ์์ ํธ์ถ๋๋ PlayAnimation์ AnimNotify ๊ธฐ๋ฅ์ด
๋นํ์ฑํ๋์ด ์์ต๋๋ค. (์ค๋ ๋ ์์ ์ฑ ๋๋ฌธ์ธ ๋ฏํฉ๋๋ค).
๋ฐ๋ผ์ ํ๋ ์ด์ด์ ์ํ์ ๋ฐ๋ผ ์ด๋ ๊ฐ๋ฅ / ๊ณต๊ฒฉ ๊ฐ๋ฅ / ์ ํ ๊ฐ๋ฅ ๋ฑ์ ์ ๋ ฅ ์ ์ด๋ฅผ ์์ค ์ฝ๋ ์์์ ์๊ฒฉํ๊ฒ ์ ์ดํ๊ณ , ๊ทธ ์ํ์ ๋ฐ๋ผ Animation Blueprint์์
์ ๋๋ฉ์ด์ ์ ์คํํ๊ฒ ๋ง๋๋ ๊ฒ ๋ฐ๋์งํฉ๋๋ค.
>> Blueprint Update(Tick) ๋งค ํ๋ ์ ํธ์ถ
Seq 1 >>ย ย ย Conditionary (์: ๋ฌ๋ฆฌ๊ธฐ ์๋, ๋ฌ๋ฆฌ๊ธฐ ๋ฐฉํฅ, ์ ํ ์ค์ ๋๊น? ์ง์ฃผ ์ค์ ๋๊น? ์ ํฌ ์ค์ ๋๊น? ๋ฑ์ ํ๋๊ทธ ์ค์ ) ๋ณ์๋ค์ ์ค์
Seq 2 >> ย ย Action ์คํ ... OwningCharacter์ ํ์ฌ ์ํ๊ฐ
?? ์ณ๋ง๋ ์ค : Movement ์ปดํฌ๋ํธ๊ฐ ๊ฐ๊ณ ์๋ย ํผ๊ฒฉ ์ ๋๋ฉ์ด์ ์ ํผ๊ฒฉ ๋ฐฉํฅ์ ๋ฐ๋ผย ์คํ
?? ๊ณต๊ฒฉ ์ค : CombatComponent()์ CurrentSkill() ์ธ์คํด์ค๋ก๋ถํฐ ๊ณต๊ฒฉ ์ ๋๋ฉ์ด์ ์ ์ฐพ์ ์คํ
?? ์ ์๋ฆฌ && ํ์ ์ค : ํ์ ๊ฐ๋๊ฐ ์ผ์ ์ด์์ ๋๋ฌํ ๋๋ง๋ค ํ์ ์ ๋๋ฉ์ด์ ์คํ.
๊ณต๊ฒฉ์ ์์ํ๋ ๋ถ๋ถ์ ๋ธ๋ฃจํ๋ฆฐํธ์ ๋๋ค.
๊ฐ๋ ์ฑ ๋ฐ์ด๋ฌ์ง๋ง ๋ธ๋ฃจํ๋ฆฐํธ๋ฅผ ์ข ์๋ ๋ถ์ด๋ผ๋ฉด ์ด์ฐ์ด์ฐ ๋ณผ ์๋ ์์ ๊ฒ๋๋น....
CombatComponent์ Property ๋ชฉ๋ก์ ๋๋ค.
๋ณด์๋ค์ํผ ๊ฐ ์ปค๋งจ๋์ ๋ฐ๋ผ CombatSkill ํด๋์ค(์ธ์คํด์ค ์๋ ์ฃผ์!)๊ฐ ๋ฑ๋ก๋์ด ์๊ณ , ์ฝ๊ณต๊ฒฉ ํผ๊ฒฉ ๋ชจ์ ๊ณผ ๊ฐ๊ณต๊ฒฉ ํผ๊ฒฉ ๋ชจ์ ,
๊ทธ๋ฆฌ๊ณ ์ฃฝ์ ๋ชจ์ ์ด ๊ฐ๊ฐ ๋ฑ๋ก๋์ด ์์ต๋๋ค.
์คํฌ์ ์์ ๊ฐ์ด ๊ฐ๊ฐ์ ์ ๋๋ฉ์ด์ ์ํ์ค ํ๋๊ฐ ํ ์ ๋์ผ๋ก ๋ค๋ค์ ธ, ๋ง์ฝ 3๋จ ์ฝค๋ณด๋ผ๋ฉด 3๊ฐ์ ์คํฌ ์ํ์ค๋ฅผ ํ์๋ก ํ๊ฒ ๋ฉ๋๋ค.
์๋ ์คํฌ ํด๋์ค์ ํ๋กํผํฐ๋ก, ์ฝ๊ณต๊ฒฉ ์ดํํธ์ ๊ฐ๊ณต๊ฒฉ ์ดํํธ (์ผ๋ฐ / ์น๋ช ํ) ํํฐํด ์ ์ ,ย
๋ค์ ์ฝค๋ณด๋ฅผ ์ ์ํ๋ ์ปค๋งจ๋-์คํฌ ํ ์ด๋ธ
์คํด, ๋๋ฏธ์ง ๊ฐ์ค์น์ ์๊ตฌ ์คํ๋ฏธ๋ ํ๋กํผํฐ๋ฅผ ๊ฐ์ต๋๋ค.
์ด๊ฑด Weapon์์ ๋งค ํฑ๋ง๋ค ํธ์ถํ๋ Trace ์ํ์ค์ ๋๋ค. ์์ ํ HitOccur๊ฐ ์ ๊ธฐ์ ํธ์ถ๋๊ณ ์์ต๋๋ค.
HitOccur๋ ๋ด๋ถ์ ์ผ๋ก __WHEN_HIT_SOMTHING์ ํธ์ถํ๊ณ , ์์ธํ ์ค๋ช ์ ์ฃผ์์ผ๋ก ๋ฌ๋ ค์์ต๋๋ค.
์ ๊น๋ํ ์ฝ๋ฉ ์ต๊ด์ ์ฟ๋ณผ ์ ์๋ ๋ถ๋ถ์ ์ฃ .
๋ง์ง๋ง์ผ๋ก, HitMotion ๋ชฝํ์ฃผ์ ๋๋ค. ์์ ๊ฐ์ด ํผ๊ฒฉ ๋ฐฉํฅ์ ๋ฐ๋ฅธ ์น์ ์ผ๋ก ๊ตฌ๋ณ๋์ด ์์ต๋๋ค.
์ฝค๋ณด๋ ์ฝค๋ณด ์์์ ๋ฐ๋ฅธ ์น์ ์ผ๋ก ๊ตฌ๋ณ๋์ง๋ง, ๊ผญ ์ ์ด๋ฆ์ผ๋ก ํ ํ์๋ ์์ต๋๋ค.
์น์ค
๋น์ง์ฌ๊ด์ธ๋ฐ ๋นจ๋ฆฌ ๋ณต๊ทํด๋ผ
ใฑใ ใฑใ ๋์ ๋ง์ด๋์ต๋๋ค!!