https://gall.dcinside.com/game_dev/108437
๋งํฌ ์ง๋ฌธ์ ๋ํ ๋ต๋ณ์
์๋ ๊ณ ๋์์ง์ผ๋ก ๋ณธ์ธ์์ด ๋ง๋ค์ด๋๊ฑฐ ์ค์ท ๋ณด์ฌ์ฃผ๋ฉด์ ์งํํ๋ ค๊ณ ํ๋๋ฐ
์ ๋๋ API์ค๋๋ง์ ์ด์ด๋ณด๋๊นย
๊ฑ ๋์ถฉ ์ ๋๋ API์์ ๋ญ๋ญ ์จ์ ์ด์ผ์ด์ผํ๋์ง ์ฐ์ด์ฃผ๋ฉด ๋๊ฒ๋ค ์ถ์ด์ ๊ฑ ๊ธ๋ก ์
1,์บ๋ฆญํฐAnimator์ AnimatorController๋ฅผ ๊ธฐ๋ฐ์ผ๋กํ๋ย
AnimatorOverrideController๋ฅผ ๋ง๋ ๋ค.
๊ทธ ํย AnimatorOverrideController์ย
๊ฐ๊ฐ์ ์บ๋ฆญํฐย ์ ๋๋ฉ์ด์ ํด๋ฆฝ์ ๋์ํ๋ ์ ๋๋ฉ์ด์ ํด๋ฆฝ์ ๋ฃ์ด์ค๋ค
2.์บ๋ฆญํฐAnimator์ ๋ณ๋์ย Animatorย ์ปดํฌ๋ํธ๋ฅผ ์ค๋ธ์ ํธ์ ๋ง๋ค์ด์
AnimatorOverrideController๋ฅผ ๋ฃ์ด์ค๋ค
3.์ค๋ธ์ ํธAnimator๋ฅผ ๋นํ์ฑํํ๋ค.ย
์ฐ๋ฆฌ๊ฐ ์คํฌ๋ฆฝํธ๋ฅผ ํตํดย ์ ์ดํด์ค๊ฑฐ๋ผ์
์ง ๋ง๋๋ก ์ ๋๋ฉ์ด์ ์ด ์ฌ์๋๋ฉด ์๋๊ธฐ ๋๋ฌธ
4.์ค๋ธ์ ํธ์ ๋ฌ์์ค ์คํฌ๋ฆฝํธ๋ฅผ ํ๋ ๋ง๋ ๋ค.
์ด ์คํฌ๋ฆฝํธ๋ย ์บ๋ฆญํฐAnimator๋ณด๋ค ๋ฆ๊ฒ ์คํ๋์ด์ผ ํ๊ธฐ ๋๋ฌธ์
ExecutionOrder๋ฅผ ์กฐ์ ํ๋ ๊ฐ
์ข ์ด๋ฐ ์์ฑํ ์ฌ์ ์ฝ๋๋ฅผ Update๊ฐ ์๋ LateUpdate()์๋ค๊ฐ ์ฐ๋๊ฐ ํด์
์บ๋ฆญํฐAnimator๊ฐ ์๋ํ๊ณ ๋์ ์๋ ํ๋๋ก ์กฐ์น๋ฅผ ์ทจํด์ค๋ค.
5.Start()ํจ์์์ ์บ๋ฆญํฐAnimator์ ์ค๋ธ์ ํธAnimator๋ฅผ ์บ์ฑํ๋ค
๊ฐ๊ฐ charAnimator, objectAnimator๋ผ๋ ๋ณ์๋ก ์บ์ฑํ๋ค๊ณ ๊ฐ์ ํจ
6.ํด๋์ค์ ๋ค์์ ๋ณ์๋ค์ย ์ ์ธํด์ค๋ค
int oldFullPathHashย = 0
float oldTime = 0
7.Update()๋ LateUpdate()์ย ์ฌ์ ์ฝ๋๋ฅผ ์์ฑํ๋ค
์ฐธ๊ณ ๋ก ๋ณธ์ธ์ ๋งจ๋ ๊ณ ๋ํ๋๋ผย ์ ๋๋ ์๊น์๋์ ๋ฉ๋ชจ์ฅ์ผ๋ก ์ฝ๋ฉํ ๊ฑฐ๋ผ
๊ธธ๊ฒ์ฐ๊ธฐ ์ซ์ด์ ๋ ์ด์ด๊ฐ ๋จ ํ๋๋ผ๋ ๊ฐ์ ํ์ ์์ฑํ ๊ฑฐ๋
๋ ์ด์ด๊ฐ ์ฌ๋ฌ๊ฐ๋ฉด ์์์ ์ผ๋ฐํ ํ์
๋ณ๋ก ์ด๋ ต์ง ์์๊ฑฐ์
AnimatorStateInfo stateInfo = charAnimator.GetCurrentAnimatorStateInfo(0)
int currentFullPathHash = stateInfo.fullPathHash
float currentTime = stateInfo.normalizedTime * stateInfo.length
//์บ๋ฆญํฐAnimator๊ฐ ์ฌ์์ค์ธ state๊ฐ ๋ณ๊ฒฝ๋์์ผ๋ฉด
if (oldFullPathHash != currentFullPathHash){
ย ย //์ค๋ธ์ ํธAnimator๋ ํด๋น state์ฌ์
ย ย charAnimator.PlayInFixedTime(currentFullPathHash, 0, currentTime)
ย ย //์ ๋๋ฉ์ด์ ์ฆ์ ์ ์ฉ
ย ย charAnimator.Update(0f)
}
//์บ๋ฆญํฐAnimator๊ฐ ์ฌ์์ค์ธ state๊ฐ ๊ทธ๋๋ก๋ผ๋ฉด
else{
ย ย //์บ๋ฆญํฐAnimator๊ฐ ์ฌ์ํ ๋งํผ ์ค๋ธ์ ํธAnimator๋ ์ฌ์
ย ย charAnimator.Update(currentTime - oldTime)
}
oldFullPathHash = currentFullPathHash
oldTime = currentTime
๋
๋งํ๋ฏ์ด ide๋์ ์๋ฐ๊ณ ๋ฉ๋ชจ์ฅ์ผ๋ก ์์ฑํ๊ณ
ํ ์คํธ๋ ์ํด๋ฐ์ ๊ทธ๋๋ก ๊ฐ๋ค ๋ณต๋ถํ์๋ ์๋์ ๋ณด์ฅํ์ง ์์
๋ณธ์ธ์์ ์ด๋ฐ ๋ฐฉ์์ผ๋ก ํ์์ด
ํต์ฌ์ Animator์ Update()ํจ์์
์ด๊ฑด ์ ๋๋ ์คํฌ๋ฆฝํธ์์ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉํ๋ Update()ํจ์๋์ ์์ ํ ๋ณ๊ฐ๋๊นย
ํ๊ฐ๋ฆฌ์ง๋ง์
Animator.Update(int deltaTime)๋ ๊ฐ๋จํ ๋งํด์
ํจ์๋ฅผ ํธ์ถํ๋ "์ฆ์" ํ์ฌย ์ ๋๋ฉ์ด์ ์ ๋งค๊ฐ๋ณ์๋ก ๋๊ธด
deltaTime๋งํผ ์ฌ์์ํค๊ณ ย
์ ๋๋ฉ์ด์ ์ ์์ฒด๋ฅผ ์ ์ฉ์์ผ์ฃผ๋๊ฑฐ์
์ฐ๋ฆฌ๊ฐ Animator.Play()๋ฅผ ํ๋ค๊ณ ํด์ ์ ๋๋ฉ์ด์ ์ด ๋ฐ๋ก ์ ์ฉ๋์ง ์์.
Play()๋ฅผ ํ๋ฉด,
์ฌ์ํ๋ ค๋ State๋ง ๋ณ๊ฒฝํ๊ณ ์ค์ ์ ๋๋ฉ์ด์ ์ ์ ์ฉ์ ๋ค์ํ๋ ์์ ๋ฐ์ํจ
๊ทผ๋ฐย Animator.Update(int deltaTime)๋ฅผ ์ฐ๋ฉด ๋ฐ๋ก ์ ์ฉ๋จ
์ด๋ฅผ ์ด์ฉํด์ ๋ ์ ๋๋ฉ์ดํฐ๊ฐ์ ์ฑํฌ๋ฅผ ์๋ฒฝํ๊ฐ ๋ง์ถ๋๊ฒ ๊ฐ๋ฅํ๊ฑฐ์์ค์ค์ค์ค
์์์ง๋ฌธ : Transition์ค์๋ ์ ๋๋ก ์๋ ์ํ ๊ฑฐ ๊ฐ์๋ฐ?
๋ต๋ณ : ๊ทธ๊ฑด...๋์ด...์์์...ํด์ผ๋....
์์์ง๋ฌธ2 : BlendTree์์ ์ ๋๋ก ์๋ ์ํ ๊ฑฐ ๊ฐ์๋ฐ?
๋ต๋ณ:ย ๊ทธ๊ฑด...๋์ด...์์์...ํด์ผ๋....
๊ทธ์น๋ง ์ง๋ฌธ์๋ ์ค์ผ๋ ํค์ ๋๋ฉ์ด์ ์ ์์ฐ๋๊น Transition๋ BlendTree๋ ์ธ ์ผ์ด
์ ์ง ์์๊ฐ????
์๋๋ง๊ตฌ
์ญ์ ๊ฐ๋ฐ์๋ ๋ฌ๋ผ ์ฝ
์ธ๋ฆฌ์ผ ๊ฐ์๋ ์จ์ค
์ธ๋ฆฌ์ผ ์ํด๋ฐง์ด!!
์ ํํ๋ ํ๋ ค๋ค๊ฐ ๊ณต์๋ฌธ์ ํํ ๋ฆฌ์ผ์ด ์ต์ ํ๊ฐ ์๋์ด์์์ ๊ฐ๊ฐ์ด ์ ๋๋ ๋ก ํ์์ด
์ด ๋๊ธ์ ๊ฒ์๋ฌผ ์์ฑ์๊ฐ ์ญ์ ํ์์ต๋๋ค.
์ด ๋๊ธ์ ๊ฒ์๋ฌผ ์์ฑ์๊ฐ ์ญ์ ํ์์ต๋๋ค.
์ด ๋๊ธ์ ๊ฒ์๋ฌผ ์์ฑ์๊ฐ ์ญ์ ํ์์ต๋๋ค.
์ด ๋๊ธ์ ๊ฒ์๋ฌผ ์์ฑ์๊ฐ ์ญ์ ํ์์ต๋๋ค.
์ด ๋๊ธ์ ๊ฒ์๋ฌผ ์์ฑ์๊ฐ ์ญ์ ํ์์ต๋๋ค.
์๋ ์ด์ ์์ด ์ญ์ ํ์ง๋ง์ธ์
์๋ ์ด๋ถ์ด ํ๋ ์๋น ํ๋์ ๋ง์ถ๋ ค๊ณ ํ์ผ๋ฉด ์ฒซ์ง๋ฌธ์ด 2ํ๋ ์์์ 5ํ๋ ์์ ์ง๋ฌธํ ์๊ฐ์์ฃ
์ฝ๋์ด์ ์ ์์์ด์๋์?
2์ ํ๋์ 5์์ค๋ธ์ ํธํ๋์ ์ด๋ป๊ฒ 1:1๋น์จ๋ก ๋ง์ถฐ์?
์บ๋ฆญํฐํ๋ํ๋ ์๊ณผ ์ค๋ธ์ ํธํ๋ ์์ด ์ ์ด๋ 1:1๋น์จ์ด์ด์ผ์ฃ
2ํ๋ ์ idle์ 5ํ๋ ์ ๋ชจ์ ์์ฐ๊ธฐ๋ฅผ 1:1๋น์จ๋ก ์ด๋ป๊ฒ ๋ง์ถฐ์? ๊ทธ๊ฒ ์์ด์์ด์์???
์๋์๋์. ๊ทธ๊ฑธ 1:1๋น์จ ํ๋ ์ ๋ง์ถ๋ ค๊ณ ํ ์ฌ๋์ด CPU์ ํ๊ณ์ ๋์ ํ๋ ์ผ์ด๋ผ ๋ถ๊ฐ๋ฅํ๋ค๊ณ ํ๊ฒ ์ด์?
์ง๋ฌธ์ด ์์ ์ด ๊ณ์๋๊ณ ๋ง์ด ๋ฐ๋๋๋ฐ. ์ง๋ฌธ์ด ๋ช ๋ฐฑํ๊ฒ ์์ ๋์๋๋ฐ ์ ๊ทธ๋ฌ์ญ๋๊น
์ ๋ฐ ์ด์ ์์ด ์ญ์ ๋ง์ธ์ ๊ณ 32์ํฉ๋๋ค
์ง๋ฌธ์ด ๊ณ์ ๋ฐ๋๋๊น ์๋ ์ง๋ฌธ์ด ์๋๋๊น ์์ค์ง...