๐ ์ง๋ ํฌ์คํ ์ ์ธ๋ฆฌ์ผ ์์ง5์ Old Input System์ ์ฌ์ฉํ์ฌ 3์ธ์นญ ์บ๋ฆญํฐ ์กฐ์ ์์คํ ์ ๊ตฌํํด๋ณด์๋ค.
์ด๋ฒ์๋ ๐น๏ธ Enhanced Input System์ผ๋ก ๋์ผํ ๊ธฐ๋ฅ์ ๊ตฌํํด ๋ณผ ๊ฒ์ด๋ค.
์ด์ ํฌ์คํ
์ ๋ณด๊ณ ์ค์๊ธธ ๋ฐ๋๋๋ค.
์ด๋ฒ ํฌ์คํ
์์๋ Blueprint๋ก ์ฝ๋ฉํ์ฌ ์บ๋ฆญํฐ ์กฐ์์ ๊ตฌํํฉ๋๋ค.
1. ํ๋ก์ ํธ ์์ฑ
2. ํ๋ก์ ํธ ์ค์
3. IA ์์ฑ
4. IMC ์์ฑ
5. ๋ธ๋ฃจํ๋ฆฐํธ ์ฝ๋ฉ
6. ๊ฐ์
โ๋ชจ๋ ๊ณผ์ ์ ํ๋ํ๋ ์ค๋ช
ํฉ๋๋คโ
โ์์ง์์ ํธ์๋ฅผ ์ ๊ณตํ๊ธฐ ์ํด ์๋์ผ๋ก ์ค์ ๋๋ ๊ฒฝ์ฐ๋ ๋ชจ๋ ์ค๋ช
ํ๋ ์ฐธ๊ณ ๋ฐ๋๋๋คโ
Blueprint์๋ํฐ์ [Event Graph] ๋ก ์ด๋ํ์.
Old Input System ํฌ์คํ
์ Blueprint ์กํฐ๋ฅผ ๊ทธ๋๋ก ์ฌ์ฉํ ๊ฒ์ด๋ค.
๊ธฐ์กด์ ์ด๋ฒคํธ ๊ทธ๋ํ๋ ํ๋ฆ์ ๋๊ณ ์์ผ๋ก ์น์ฐ๊ฑฐ๋ ๋ชจ๋ ์ญ์ ํด์ฃผ์
[Event Graph] ์์ Get Player Controller ๋ ธ๋๋ฅผ ์ถ๊ฐํ์
๊ทธ๋ฆฌ๊ณ Get Player Controller ์ ๋ฐํ๊ฐ์ ๋์ด์ Enhanced Input Local Player Subsystem ์ ๊ฒ์ํด์ ๋ฃ์ด์ฃผ์
์ด๋ ๊ฒ ๊ฒ์ ํ ์ถ๊ฐํ๋ฉด ์๋์ ๋
ธ๋๊ฐ ์์ฑ๋๋ค.
ํด๋น ๋
ธ๋๋ C++์์ ์์
ํ ๋ ๋์๋ฌธ์๊น์ง ๊ตฌ๋ณํด์ ์ง์ ์
๋ ฅํด์ค์ผ ํ๋ ์ด๋ฆ์ ์ธ์๋์...
Enhanced Input Local Player Subsystem์ ๋ฐํ๊ฐ์ ๋์ด์ Add Mapping Context๋ฅผ ๊ฒ์ํด์ ์ถ๊ฐํด์ฃผ์
Add Mapping Context ๋
ธ๋์ [Mapping Context]์ ์๋ [Select Asset]์ ๋๋ฌ ์ฐ๋ฆฌ๊ฐ ์์ฑํ IMC_Player_Input์ผ๋ก ์ค์ ํด์ฃผ์
๊ทธ๋ฆฌ๊ณ Event BeginPlay๋ฅผ ์ถ๊ฐํ๊ณ ๋ฐฉ๊ธ ์ถ๊ฐํ ๋
ธ๋์ ํ๋ฆ์ ์ฐ๊ฒฐํด์ฃผ์.
์ด๊ฒ์ผ๋ก Enhanced Input System์ ์ฌ์ฉํ ์ ์๋ค.
์ด์ Input Action์ ์ถ๊ฐํด์ ์ง์ ์์ง์์ ๋ํ ๋ด์ฉ์ ์ฝ๋ฉํ์.
์๋์ ์ฐ๋ฆฌ๊ฐ ์์ฑํ IA_Jump, IA_Look, IA_Move ๋
ธ๋ 3๊ฐ๋ฅผ ์ถ๊ฐํด์ฃผ์.
์ธ๋ฆฌ์ผ์์ ์ ๊ณตํ๋ ๋์ผํ ์ด๋ฆ์ด ์์ผ๋ ์ ์ฅ์์น๋ฅผ ์ ๋ณด๊ณ ๊ฐ์ ธ์ค์.
ํน์ ๋ถํธํ ์ฌ๋์ ์ด๋ฆ์ ๋ณ๊ฒฝํด๋ ๋ฌด๋ฐฉํ๋ค!
๊ทธ๋ฆฌ๊ณ IA_Move์ IA_Look์ Action Value ๋ฐํํ์ ์ฐํด๋ฆญ ํ Splitํ์
W,A,S,D์ผ๋ก ์ด๋ ์กฐ์๋ถํฐ ๊ตฌํํ๊ฒ ๋ค.
๋น๊ณต๊ฐ์ ์ฐํด๋ฆญ ํ Add Movement Input ๋
ธ๋๋ฅผ ๊ฒ์ํ 2๊ฐ ์ถ๊ฐํ๋ค.
๊ทธ๋ฆฌ๊ณ IA_Move์ [Triggered]ํ๋ฆ์ ์ด์ด์ฃผ์
์ข์ฐ ์ด๋์ ๋จผ์ ๋ง๋ค๊ฒ ๋ค.
- IA_Move์ [Action Value X]๋ฅผ ์ฒซ๋ฒ์งธ Add Movement Input ๋ ธ๋์ [Scale Value]์ ์ฐ๊ฒฐ
- Get Control Rotation ๋ ธ๋ ์ถ๊ฐ
- Get Right Vector ๋ ธ๋ ์ถ๊ฐ
Math - Vector์ Get Right Vector๋ฅผ ๊ฐ์ ธ์ค์ ์ผ ํฉ๋๋ค.
- Get control Rotationd์ [๋ฐํ๊ฐ]์ Get Right Vector [์ ๋ ฅ๊ฐ]์ ์ฐ๊ฒฐ
- Get Right Vector ๋ ธ๋์ [๋ฐํ๊ฐ]์ ์ฒซ๋ฒ์งธ Add Movement Input ๋ ธ๋์ [World Direction]์ ์ฐ๊ฒฐ
์ฌ๊ธฐ๊น์ง ์๋ฃํ๋ค๋ฉด โ์ปดํ์ผ ์ ์ฅโํ ํ๋ ์ดํ๋ฉด ์ข์ฐ ์ด๋์ด ๊ฐ๋ฅํด์ง๋ค.
์ด๋ฒ์ ์ ๋ค ์ด๋์ ๋ง๋ค๊ฒ ๋ค.
- IA_Move์ [Action Value Y]๋ฅผ ๋๋ฒ์งธ Add Movement Input ๋ ธ๋์ [Scale Value]์ ์ฐ๊ฒฐ
- Get Control Rotation ๋ ธ๋ ์ถ๊ฐ
- Get Forward Vector ๋ ธ๋ ์ถ๊ฐ
Math - Vector์ Get Forward Vector๋ฅผ ๊ฐ์ ธ์ค์ ์ผ ํฉ๋๋ค.
- Get control Rotationd์ [๋ฐํ๊ฐ]์ Get Forward Vector [์ ๋ ฅ๊ฐ]์ ์ฐ๊ฒฐ
- Get Right Vector ๋ ธ๋์ [๋ฐํ๊ฐ]์ ์ฒซ๋ฒ์งธ Add Movement Input ๋ ธ๋์ [World Direction]์ ์ฐ๊ฒฐ
โ์ปดํ์ผ ์ ์ฅโํ ํ๋ ์ดํ๋ฉด W,A,S,D๋ก ์กฐ์์ด ๊ฐ๋ฅํด์ง๋ค!
ํน์ ์บ๋ฆญํฐ๊ฐ ์ข์ฐ๋ฐ์ , ์ํ๋ฐ์ ์ผ๋ก ์ด๋ํ๋ค๋ฉด IA_Move์ [X], [Y]๊ฐ์ ๋ฐ๋๋ก ๋ฃ์๋์ง ํ์ธํ์.
๊ทธ๋๋ ๋ฌธ์ ๊ฐ ์๋ค๋ฉด IMC_Player_Input์์ ๊ฐ ์ ๋ ฅ Mapping์ Modifiers ๊ฐ์ด ๋ฐ๋๋ก ๋์ด ์๋์ง ํ์ธํ์.
์๋๋ ์ ์ฒด ๋ ธ๋ ์ฌ์ง์ด๋ ๋น๊ตํด๋ณด์.
์ด๋ฒ์๋ ๋ง์ฐ์ค ์์ ์กฐ์์ ๊ตฌํํด๋ณด์.
๋น๊ณต๊ฐ์ ์ฐํด๋ฆญ ํ Add Controller Yaw Input๋ ธ๋๋ฅผ ์ถ๊ฐํ๋ค.
๊ทธ๋ฆฌ๊ณ ์๋ ์ฌ์ง๊ณผ ๊ฐ์ด ์ ์ ์ด์ด์ฃผ๋ฉด ๋์ด๋ค.
ํ๋ ์ด ํด๋ณด๋ฉด ๋ง์ฐ์ค ์ข์ฐ ์์ ์กฐ์์ด ๊ฐ๋ฅํด์ง๋ค.
๋น๊ณต๊ฐ์ ์ฐํด๋ฆญ ํ Add Controller Pitch Input๋ ธ๋๋ฅผ ์ถ๊ฐํ๋ค.
๊ทธ๋ฆฌ๊ณ ์๋ ์ฌ์ง๊ณผ ๊ฐ์ด ์ ์ ์ด์ด์ค๋ค.
โ์ปดํ์ผ ์ ์ฅโํ ํ๋ ์ด ํด๋ณด๋ฉด ๋ง์ฐ์ค ์ํ ์์ ์กฐ์์ด ๊ฐ๋ฅํด์ง๋ค.
ํน์ ์ํ ์กฐ์์ด ์๋๋ค๋ฉด ์ถ๊ฐ์ค์ ์ ํด์ค์ผ ํ๋ค.
๊ทธ๋ผ ์ํ ๋ง์ฐ์ค ์์ ์กฐ์์ด ๊ฐ๋ฅํด์ง๋ค.
Space Bar๋ฅผ ๋๋ฌ ์ ํ ์กฐ์์ ๊ตฌํํ๊ฒ ๋ค.
๋น๊ณต๊ฐ์ ์ฐํด๋ฆญ ํ jump๋ผ๊ณ ๊ฒ์ํ๋ค.
๊ทธ๋ผ ํ๋์ function์ Jump ๋
ธ๋๋ฅผ ์ถ๊ฐํ๋ค.
๊ทธ๋ฆฌ๊ณ IA_Jump ๋ ธ๋์ [Triggered]ํ๋ฆ์ ์ด์ด์ฃผ๋ฉด ๋์ด๋ค.
โ์ปดํ์ผ ์ ์ฅโํ ํ๋ ์ดํด๋ณด๋ฉด ์ ํ๊ฐ ๊ฐ๋ฅํด์ง๋ค!
๋ง์ฝ ์ ํ๊ฐ ๋๋ฌด ์ฝํ ๊ฒ ๊ฐ๋ค๋ฉด ์ถ๊ฐ ์ค์ ์ผ๋ก ์กฐ์ ์ด ๊ฐ๋ฅํ๋ค.
์ด๊ฒ์ผ๋ก Enhanced Input System์ ์ฌ์ฉํ์ฌ ์ธ๋ฆฌ์ผ ์์ง5์์ ์บ๋ฆญํฐ๋ฅผ ์กฐ์์ ๋ชจ๋ ๊ตฌํํ์๋ค.
๋ค์ ํฌ์คํ ์ ๊ฐ์ ์ด ํ์ํ ๊ฒ๋ค์ ์์ ํด๋ณด๊ฒ ๋ค.
1. ํ๋ก์ ํธ ์์ฑ
2. ํ๋ก์ ํธ ์ค์
3. IA ์์ฑ
4. IMC ์์ฑ
5. ๋ธ๋ฃจํ๋ฆฐํธ ์ฝ๋ฉ
6. ๊ฐ์