์ง๊ธ fps๊ฒ์ ๋ง๋๋ ค๋๋ฐ ๋ฏธ์น๊ฒ ์
๋ด ๋ชฉ์ : ๋ช๋ช FPS๊ฒ์๋ค์ ๋ณด๋ฉด ( EX : EscapeFromTarkov , ReadyOrNot , ์ฝ์ต๋ฑ๋ฑ)
์ ์ ์ ํ์ ์
๋ ฅ์ผ๋ก ์บ๋ฆญํฐ์ ์์ฒด(์ผ๊ตด+์ด๊ธฐ๋ฑ๋ฑ)๊ฐ ๊ทธ ๋ฐฉํฅ์ ๋ฐ๋ผ๋ด
๊ทธ๋ฌ๋ ํ์ฒด๋ ์ผ๋จ ์์ธ ์ ์ง
ํ์ ์ด ๊ณ์๋์ ๊ฐ๋์ฐจ๊ฐ ํฌ๋ฉด ๋ค๋ฆฌ๋ ํ์ ์ ํ์ฌ ์์ฒด๋ฐฉํฅ์ผ๋ก ๋ง์ถค
(์์ฒด๊ฐ ๋ฐ๋ผ๋ณด๋ ๋ฐฉํฅ์ผ๋ก ๋ค๋ฆฌ๊ฐ ํ์ ํ๋จ ๋ง์)
ํ๋ ๋ด ์นจํฌ์น๋จธ๋ฆฌ๋ก ๊ตฌ๊ธ๋ง์ ํด๋ ์์์ํ ๋ต์ ์ป์ง ๋ชปํ์.
๊ทธ๋์ ๊ฒฐ๊ตญ ์นจํฌ์น๋ฐฉ์์ผ๋ก ๋ง๋ค์ด๋ดค์ง๋ง
์ด๊ฒ ์ ๋ง ๋ง๋๊ฑธ๊น๋ ์๊ตฌ์ฌ์ด ๋ฌ.
๊ฒ์๋ง๋๋๊ฒ ํ๊ฐ์ง ๋ฐฉ์๋ง ์์ง ์๊ฒ ์ง๋ง,
๋ด๊ฐ ์๋ชป๋ ๋ฐฉํฅ์ผ๋ก ๊ฐ๊ณ ์๊ฑฐ๋ ์ข์๋ฐฉ๋ฒ์ด ์์ผ๋ฉด
์ด ์นจํฌ์น๋ฅผ ๊ตฌ์ ํด์ค์ ์์๊น
๋จผ์ ํ์ด์ด์ํค ๊ตฌ์กฐ์
FullBodyRoot(Rotate) - Animator์ปดํฌ๋ํธ + ํ์ ์คํฌ๋ฆฝํธ
์ ๊ธฐ์ ์บ๋ฆญํฐํธ๋์คํผ์ ์ต์ข
ํ์ ์ ๊ฒฐ์ ํด
@Yaw - Y์ถ ํ์ ์
๋ ฅ์ ์ด๊ฑธ ํ์ ์์ผ (์บ๋ฆญํฐ๋ฃจํธ์ ์ค์ฌ์ )
LookTarget - Yaw๋ถ๋ชจ์ ์์์ด๊ณ , ๋ด ์บ๋ฆญํฐ๊ฐ ๋ฐ๋ผ๋ณผ ๋ฐฉํฅ์ ์ญํ ์
(๋ฃฉ ํ๊ฒ์ ์บ๋ฆญํฐ์ ์ ๋ฐฉ๋ฐฉํฅ์ ์์)
๋๋จธ์ง ์ค๋ช
์ํ๊ฑด ์๊ด์๋๊ฑฐ๋ผ ์๋ตํจ
์ด์ ์ฝ๋, ํ์ ์คํฌ๋ฆฝํธ์. (์ข์ฐํ์ ๋ง)
1. ๋ด๊ฐ ํ์ ์
๋ ฅํจ
2. ์บ๋ฆญํฐ ์์ฒด๋ผ๋๊ฐ ์
๋ ฅ๋ ํ์ ์คํ (์๋ ์ด๋ฏธ์ง)
ํ๋ ๋๊ทธ๋ผ๋ฏธ -> upperBody๋ณ์ | ์ ๋ํฐ์๋ฐํ์์์ UpperChest์
LateUpdate์ ์์ฒดํ์ ์ํจ ์ด์ ๊ฐ
์ด ํ์ ์ด IK์์
์ด ์๋์๊ณ , ์ ๋ํฐ ํจ์์คํ์์์์
์ ๋๋ฉ์ด์
ํ๋ก์ธ์ค ๋๋ ๋ค์ LateUpdate๋๊น
์ฌ๊ธฐ์ ํ์ฒด๋ ์ฐ์ ๊ฐ๋งํ ์๊ธธ ์ํ์
3. ํ์ฒด ํ์ ์์
์ด์ ์์ฒด๊ฐ ํน์ ๊ฐ๋๋งํผ ํ์ ์, ํ์ฒด๊ฐ ๋ฐ๋ผ์ค๋๋ก
์บ๋ฆญํฐ๋ฃจํธ ์์ฒด์ ํ์ ์ ๋ณ๊ฒฝํ๊ธฐ๋ก ํจ.
๊ทธ๊ฒ ๋ด๊ฐ fps๊ฒ์์์ ๋ดค๋ ํ์ ๊ฐ์์์
์ฌ๊ธฐ์ ์ ๋๋ฉ์ด์
๋ ์ด์ด๋ฅผ ์ถ๊ฐ (BaseLayer + ํ์ฒด์ ์ฉ๋ ์ด์ด , ์ด2๊ฐ)
์ ๋๋ฉ์ด์
์ ์ ๋ถ ๋ฏน์ฌ๋ชจ๊บผ๊ณ ,
์ ๋๋ฉ์ด์
์ ๊ทธ์ ์ ์๋ฆฌ์ ํ์ฒด๊ฐ ํด์ ํ๋๊ฑฐ์
4. ํ์ฒด ํ์ ์ฝ๋ (Updateํจ์์์ ํ์)
ํ์ฒด ํ์ ์ด๋ผ๊ณ ๋งํ์ง๋ง, ์บ๋ฆญํฐ ํธ๋์คํผ์ ํ์ ์ ์ฌ์ค
(์๋๋ฉด Pelvis(Hips) ์์์ผ๋ก ์บ๋ฆญํฐ๋ค๋ฆฌ + ์์ฒดSpine์ด ๋ชจ๋ ํฌํจ๋์์ด)
์ฌ๊ธฐ์ "CurrentTurning"์ ์ ๋๋ฉ์ดํฐ์์ ์ฐ๋ ํ๋ผ๋ฏธํฐ์ผ
ํ์ฌ ํ์ ์ ๋๋ฉ์ด์
์ ํ๊ณ ์๋ค๋ฉด ์ด์ค์ผ๋ก ํ ํ์์์ผ๋๊น ์๋ตํ๋๊ฑฐ์ผ
ํ์ฒด๊ฐ ํญ์ ๋ฐ๋ผ์ค๋๊ฒ ์๋
float angle = Vector3.SignedAngle(transform.forward, myInput.YawRotator.forward, Vector3.up);
๊ฐ๋์ฐจ๊ฐ ์์๋ ํ์ฒดํ์ ์ ์์ผฐ์ด.
ํ์ ์ ๋๋ฉ์ด์
์ด ์ฌ๊ณ ์๊ณ , ํ์ ์์ผ์ผํ๋ฉด
Animator.PlayInFixedTime(ํด๋ฆฝ์ด๋ฆ,๋ ์ด์ด, fixedTime = 0)์ผ๋ก ์ฆ์ ์คํ
5. ํ์ ์ด ์คํ๋๋ ๋์
ํ์ ์ ๋๋ฉ์ด์
ํด๋ฆฝ ๋ด๋ถ์(StateMachineBehaviour) ์คํฌ๋ฆฝํธ๋ฅผ ์คํํด (์๋)
OnStateUpdate์์
ํ์ ํ๋๋์ @Yaw์ ํ์ ๊ฐ์ผ๋ก
์บ๋ฆญํฐ ํธ๋์คํผ์ด ํ์ ํด์ผํ ๋ชฉํํ์ ์ถ์ ๊ณ์ ์ด๊ธฐํํด์ค
(์ 4๋ฒ ์คํฌ๋ฆฐ์ท ๋ง์ง๋ง์ค์ ํ์ ์
๋ ฅํ๋ ์ฝ๋๋ ์ด์ด์ง๋๊ฑฐ์ผ.)
๊ทธ๋ ๊ฒ ํ๋ฐ์ ์ด ์์ฒด๋ฅผ ๋ฐ๋ผ์ค๋๋ก ํ์ด
6. ๊ฒฐ๊ณผ๋ฌผ
์ผ๋จ ์นจํฌ์น์ ๋์ผ๋ก ๋ณผ๋
์ผ์ถ ๊ทธ๋ด์ธ๊ฒ ๋์จ๊ฒ๊ฐ์
๊ทธ๋ฌ๋ ๊ธ ์ฒ์์ ๋งํ์ง๋ง.
์ด๊ฑด ์๋ชป๋ ๋ฐฉ์์ผ๊น๋ ์๊ตฌ์ฌ์ด ๋ค์ด ๊ธ์ ์ฐ๊ฒ๋จ
๊ทธ๋์ ๊ฒฐ๋ก ์
์ด๋ ๊ฒ ๋ง๋ค์ด๋๋จ?
------
๊ธฐํ (์ ์ฝ์ด๋๋จ)
์ฐ์ ์ง๊ธ ์ ์ ์บ๋ฆญํฐ ๋ชฉ์ ์ด
์๋๋ฐฉ์ด ๋ณด๋ ๋์ ๋ชจ์ต์ด์ ๋(ํด๋ผ)์ ํ๋ฉด์ ๋น์ถฐ์ง ์ ๋ค์ ๋ชจ์ต์
ํ๋ ์ด์ด์ ์บ๋ฆญํฐ๋ ์ ๊ธฐ ๋ชจ๋ธ์์ ํ๋ง ๋ผ๊ณ
ํ์ฒด๋ถ๋ถ๋ง ๋ฐ๋ก ๋ผ์ ๋ง๋ค๊ณ ์์.
์ง๊ธ ํ๋ ์ด์ด ์บ๋ฆญํฐ(fpsArm๋ชจ๋ธ)์ ์ ๋๋ฉ์ด์
๋ฆฌ๊น
์ ์ฐ๊ณ ์์
(์ ์ ์บ๋ฆญํฐ์ ์ ๋๋ฉ์ด์
๋ฆฌ๊น
์ฐ๋ค๊ฐ ๋ต๋ตํด์ ํฌ๊ธฐํจ)
๊ทธ๋ฆฌ๊ณ ์ ์ ์บ๋ฆญํฐ์ ์ ๋ฃฉIK ์์ป๋๋ฉด
์ด๊ฑด ์ฐธ ๋ญ๋ผ ์ค๋ช
ํ ์ง ๋ชจ๋ฅด๊ฒ ๋๋ฐ (์นจํฌ์น์ ๋จธ๋ฆฌ๋ฅผ ์ดํดํด์ค)
์ด๊ธฐํผ๋ด์์น๋ฅผ ์ธ์ ๋ ์บ๋ฆญํฐ ์์ฒด์ ๊ณ ์ + ์บ๋ฆญํฐ ์์ฒดํ์ ์ ๊ฐ์ด ํ์ ํ ๋
๋ฃฉik๊ฐ ์๊พธ ๊ทธ๊ฑธ ๋ฐฉํดํ๊ณ ์บ๋ฆญํฐ์IK์๋ ๋ฌธ์ ๊ฐ ์๊ฒจ์
์ํผ ๊ทธ๊ฑด ์ฐ๋ค๊ฐ ํฌ๊ธฐํ์.
๋์ ์ ๋๋๋ฐ ์ ๋ ์ด์ ๊ฐ ๋ญ์๋ ธ
์ฌ์ค ๋ฃฉik์์ฐ๊ณ ๋ณธ์ ์ง์ ํ์ ์ํค๋ ๋ฐฉ๋ฒ์ด ๊ณผ์ฐ ๋ง๋๊ฑด์ง ์๋ฌธ์ด ๋ค์์ ๊ทธ๋ฆฌ๊ณ ์ด๋ฐ ์.ํ์ฒดํ์ ํํ ๋ฆฌ์ผ์ด๋ ์ ๋ณด๋ฅผ ๋ด๊ฐ ๋ชป์ฐพ๊ฒ ๋๋ผ
ํด๋น ๋๊ธ์ ์ญ์ ๋์์ต๋๋ค.
ํน์ LookIK๋ฅผ ๋ง๋ค๋๊ฑฐ์ผ ์๋๋ฉด ์ ๋งํฌ ์์ ์ ์ฐธ๊ณ ํ๋ผ๋ ๋ง์ด์ผ? ๋ ํ์ฒด๋ฅผ ํ์ ํ ๋ ๊ทธ๋ฌ๋ฉด 0-45 | 45 - 90๋ ํ์ ๋ฑ๋ฑ ๊ฐ์ข ์ ๋๋ฉ์ด์ ๋ค์ 0~360๋ ์ถ ๋ค ์ค๋นํด๋๊ณ ์์ฒด ํ์ ์ ๋ง๊ฒ ์งํํ๋ผ๋ ๋ง์?
๋จ ์ง๊ธ ์ฐ๋ ๋ชจ๋ธ๋ค์ด ์ง์ ๊ฐ๋ฐ ๊ท์น์ ์ ํด์ ๋ง๋ค์ด์ง ๊ฑฐ๋ผ๋ฉด ์ฝ๋๋ ๊ทธ์ ๋ฐ๋ผ ์ ํด์ง ๊ท์น์ด๋ผ๋๊ฒ ์๊ธฐ๋๋ฐ ์ ๊ฑด ๊ทธ๋ฐ๊ฒ ์๋๋๊น ๊ฒ๋ณด๊ธฐ์ ๋ฉ์ฉกํ๊ฒ ์ ์๋ํ๋ฉด ๊ทธ๊ฒ ์ฅ๋ก์ด์ผ ์ ๋ต์ด๋๊ฒ ๋ฑํ ์์ผ๋ ๋๋ฌด ๊น๊ฒ ๊ณ ๋ฏผ ํ ํ์ ์๋ค๊ณ ๋ด
๊ณ ๋ง๋ค ์ฒซ๋ฒ์จฐ ๋๊ธ๊ณผ ์ด๊ฑฐ๋ณด๋ ์ฐ์ ์ด๋๋ก ์คํํ๋ค ๋์ค์ ๋ฌธ์ ์๊ธฐ๋ฉด ๋ค์ ๊ณ ๋ฏผ๊ธ์ธ๊ฒ