/* ์์ ๋ค์ผ๋ฉฐ ํ๋ ๋ด์ฉ๋ค์ ์ค์ตํด๋ณด๋ฉฐ ์ ๋ฆฌํ ๊ธ์ ๋๋ค. ์๋ชป๋ ๋ถ๋ถ์ด ์๋ค๋ฉด ๋ง์ํด์ฃผ์ธ์. */
๊ฒ์์ ํน์ ํ๋ซํผ ํ๋๋ง์ ๊ฒจ๋ฅํ๊ณ ๊ฐ๋ฐํ๋ ๊ฒฝ์ฐ๋ ๊ฑฐ์ ์๋ค. ์ค์ผ์ผ์ด ์ปค์ง๊ฒ ๋๋ฉด PC ๋ง๊ณ ๋ ๋ชจ๋ฐ์ผ, ์ฝ์ ๋ฑ์ ํ๋ซํผ๋ ์ง์์ ํด์ผ ํ ํ ๋ฐ, ๊ทธ ์ค์์๋, ๊ธฐ์กด Unity Input System์ ๊ฒ์ ํ๋ซํผ ํ๊ฒฝ ์๋น์ค๋ฅผ ์ถ๊ฐํ ๋ ๊ณจ๋จธ๋ฆฌ๋ฅผ ์๊ฒํ๋ ์์๋ผ๊ณ ํ๋ค. PC์์๋ ํค๋ณด๋์ ๋ง์ฐ์ค, ๋ชจ๋ฐ์ผ์ ํ๋ฉด ํฐ์น, ์ฝ์์์๋ ์กฐ์ด์คํฑ์ ์ด์ฉํ๋ ๋ฑ ํ๋ซํผ๋ง๋ค ์ฌ์ฉํ๋ ์ ๋ ฅ ๋ฐฉ์์ด ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ด๋ค.
์ฆ, ๋ค์๊ณผ ๊ฐ์ด ์ฝ๋๋ฅผ ์ง๊ฒ ๋๋ฉด ํ๋ซํผ ์ถ๊ฐ ํ์ฅํ ๋ ๊ฒ์ Input System์ ์์ ํด์ผ ํ๋ ๋ฒ๊ฑฐ๋ก์์ด ์๊ธด๋ค.
if(Input.GetKey(KeyCode.UpArrow)) // PC์์ ๋ค๋ฅธ ํ๋ซํผ์ผ๋ก ๋ณ๊ฒฝํ ๋, ๋ฒ๊ฑฐ๋ก์์ด ์๊ธด๋ค.
{
...
}
๊ทธ๋์ Unity์์๋ 2019๋ฒ์ ๋ถํฐ New Input System์ด๋ ๊ฒ์ ๋ง๋ค์๋ค.
New Input System์ด๋?
- ๋ค์ํ ํ๋ซํผ์์ ๋น ๋ฅด๊ฒ ์ปจํธ๋กค ์ค์ ๊ฐ๋ฅ
- ์ฆ, ํ๋์ ์ฝ๋๋ฅผ ํตํด ๋ค์ํ ํ๋ซํผ์ ์ ๋ ฅ ํ๊ฒฝ์ ์ง์ํ ์ ์๋ ๊ฒ์ด ํน์ง
- Package Manger์์ Input System์ ์ค์นํ์ฌ ์ ์ฉ์ด ๊ฐ๋ฅ
New Input System ์ฌ์ฉํ๊ธฐ
1. Package Manager์์ Input System ์ค์นํ๊ธฐ
Package Manger์์ Unity Registry๋ก ๋ณ๊ฒฝ ํ, Input System์ ๊ฒ์ํ์ฌ ๋ค์ด๋ก๋๋ฅผ ๋ฐ์ ์ ์๋ค.
์ค์น๋ฅผ ๋ค ํ๋ค๋ฉด, ๋ค์๊ณผ ๊ฐ์ด ๊ฒฝ๊ณ ์ฐฝ(Warning)์ด ๋ฌ๋ค. "๊ธฐ์กด Input System ๋์ ์๋ก ๋ฐ์ Input System์ ํ์ฑํํ ๊ฒ์ด๋" ๋ ๋ด์ฉ์ด๋ฏ๋ก Yes๋ฅผ ๋๋ฌ์ฃผ๋ฉด ๋๋ค.
๊ทธ๋ฌ๋ฉด Unity๋ฅผ ๋ค์ ๋ก๋ํ ๊ฒ์ด๋ค. ๋ค ๋๊ณ ๋์, Project ์ฐฝ์์ ์์ฑ์ ํ ๋ Input Actions ํญ๋ชฉ์ด ์๋ค๋ฉด ์ ๋๋ก ์ค์น๊ฐ ๋ ๊ฒ์ด๋ค.
2. ์ค์นํ ์๋ก์ด Input System์ด Unity Editor์ ์ ์ฉ๋์๋์ง ํ์ธํ๊ธฐ
Unity Editor ์๋จ ๋ฉ๋ด๋ฐ Edit → Project Settings → Player ํญ
Active Input Handling*์ด Input System Package(New)๋ก ์ค์ ๋์ด ์๋์ง ํ์ธํ๋ค. ๋ณดํต ์๋์ผ๋ก ์ค์ ๋์ด ์์ ๊ฒ์ด๊ธด ํ๋ค. ๋ง์ฝ ๊ธฐ์กด Input System์ ์ฌ์ฉํ๊ณ ์ถ๋ค๋ฉด Input Manager (Old), ๊ธฐ์กด๊ณผ ์๋ก์ด Input System ๋ ๋ค ์ฌ์ฉํ๊ณ ์ถ๋ค๋ฉด Both๋ฅผ ์ ํํด๋ ๋๋ค.
3. Input Actions ์์ ์์ฑ ๋ฐ ์ ํ ํ๊ธฐ
Project ์ฐฝ์์ Create → Input Actions ๋ฅผ ํด๋ฆญํด ์์ฑํด์ค๋ค.
Player ์บ๋ฆญํฐ์๊ฒ ์ ์ฉํ ๊ฒ์ด๋ฏ๋ก "PlayerActions"๋ผ๊ณ ์ด๋ฆ์ ์ ํด์คฌ๋ค.
์ด๋ค ํค ์ ๋ ฅ์ ํ๋ฉด, ์ด๋ค ๊ธฐ๋ฅ์ ์ํํ๋ผ ๋ฑ์ ์ด๋ฐ ๋ด์ฉ๋ค์ด ์ด Input Actions ํ์ผ ์์ ๋ค ๋ค์ด๊ฐ๋ค. ํด๋น ํ์ผ์ ๋๋ธ ํด๋ฆญํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ์ฐฝ์ด ๋ฌ๋ค.
ํ์ฌ Control Schema๊ฐ ์๋ ์ํ๋ค. Control Schema๋ ์ด๋ค ํ๋ซํผ์์ ํน์ ๋ด์ฉ๋ค์ ์ฌ์ฉํ๊ฒ ๋ค๋ ๊ฒ์ ์ค์ .
PC ํ๋ซํผ์ ๊ฒจ๋ฅํ์ฌ ์ฌ์ฉํ ๊ฒ์ธ์ง, ๋ชจ๋ฐ์ผ์ธ์ง ๋ฑ ๋ฐ๋ก๋ฐ๋ก ํ๋ซํผ์ ๋ฏธ๋ฆฌ ์ค์ ํ ์ ์๋ ๊ฒ Control Schema์ด๋ค.
์ค๋ช ํ๊ธฐ ์ด๋ ค์ฐ๋, ์ด๋ป๊ฒ ํ๋์ง ๋จผ์ ๋์ผ๋ก ๋ณด์. ๋จผ์ PC ํ๋ซํผ์์ ์ฌ์ฉํ ์คํค๋ง๋ฅผ ๋ง๋ค์ด๋ณธ๋ค.
PC ํ๋ซํผ์์ ์ฌ์ฉํ ๊ฒ์ด๋ฏ๋ก, ๋ง์ฐ์ค(Mouse)์ ํค๋ณด๋(Keyboard)๋ฅผ ์ ํํ๋ค.
๋ฌผ๋ก ์์ง ๋ด์ฉ๋ฌผ์ ๋ฃ์ง ์๊ณ , ๊ป๋ฐ๊ธฐ ํํ๋ง ์ค์ ํด๋จ์ง๋ง ๋์ค์ ๋น๋ํ ๋, ํ๊ฒ ํ๋ซํผ์ ๋ง๊ฒ ์ ํํด์ ๋น๋ํด์ฃผ๋ฉด ๋ฐฐํฌ์ฉ ์์ฑ์ด๋ค.
๊ธฐ์กด Input System์ด์๋ค๋ฉด ์ฝ๋๋ผ๋์ง ์์ ํด์ผํ ๊ฒ ๋ง์์ ๊ณจ์น ์ํ์ง๋ง, New Input System์์ ์ด ๋ถ๋ถ๋ง ๋ฐ๊ฟ์ ๋น๋ํด์ฃผ๋ฉด ๋์ด๋ค. ์ด์ ๋ด๋ถ ์ค์ ์ ํ ์ฐจ๋ก๋ค.
4. Action Maps, Actions, Properties ์ค์ ํ๊ธฐ
Action Maps๋? ์บ๋ฆญํฐ๋ ๋ชฌ์คํฐ, ์๋๋ฉด ๋ค๋ฅธ ๊ณณ์ ์ฌ์ฉํ ํค๋ฅผ Map์ ์ด๋ฆ์ผ๋ก ์ง์ ํ๋ ๊ฑธ ๋งํ๋ค.
๋ณธ์ธ์ PC ํ๋ซํผ์์ ์ฃผ์ธ๊ณต ์บ๋ฆญํฐ์ ์ฌ์ฉํ ํค ๋งต์ ์ง์ ํ๊ธฐ ์ํด, "PlayerActions"๋ ์ด๋ฆ์ผ๋ก ํ๋ ์์ฑํ๋ค.
์ด๋ ๊ฒ Map์ ํ๋ ์์ฑํ๋ฉด, ๋ด๋ถ์ ์ผ๋ก ์ค์ ํ ์ ์๋ ๊ฒ ์๊ธด๋ค.
Actions๋ ํด๋น ์บ๋ฆญํฐ์ ์ด๋ค ์ก์ ์ ์ฌ์ฉ๋ ํค ์ ๋ ฅ์ ๋ฐ์ ๊ฒ์ธ์ง์ ๋ํ ํํ๋ฅผ ์ค์ ํ๋ค. ์ฃผ์ธ๊ณต ์บ๋ฆญํฐ์ ์ก์ ์ค "์ด๋(Move)"์ ๊ดํ ๋ด์ฉ์ผ๋ก ์์ฑํด๋ดค๋ค.
๋ณดํต ์บ๋ฆญํฐ๋ WASD๋ ↑←→↓ ํค๋ฅผ ํตํด ์ด๋ ์ ๋ ฅ์ ๋ฐ๋๋ค. ๋ฐฉํฅ๊น์ง ๋ดํฌ๋์ด ์๊ธฐ ๋๋ฌธ์ Value๋ก ๋ฐ์๋ค.
Action Type์ ์ด๋ค ๊ฒ์ ๊ธฐ์ค์ผ๋ก ํค ์ ๋ ฅ์ด ๋๋์ง ์ ๋๋์ง๋ฅผ ์ ํ๋ ์ต์ ์ด๋ค.
- Value : ์ ๋ ฅ ๋ค์ด์จ ๊ฐ์ ๋ฐ๋ผ ๊ฒฐ์ (ex. '+' ๊ฐ์ด ๋ค์ด์ค๋ฉด ์ค๋ฅธ์ชฝ, '-'๊ฐ์ด ๋ค์ด์ค๋ฉด ์ผ์ชฝ ์ด๋ฐ ์)
- Button : ๋ฒํผ์ด ๋๋ ธ๋์ง, ์ ๋๋ ธ๋์ง์ ๋ฐ๋ผ ์ ๋ ฅ ์ฌ๋ถ ๊ฒฐ์ (ex. ์ ํ ๊ฐ์ ๊ฒฝ์ฐ)
Control Type์ ํด๋น ํค๊ฐ ๋๋ ธ์ ๋, ์คํฌ๋ฆฝํธ์์ ์ด๋ค ์๋ฃํ ํ์ ์ผ๋ก ๋ฆฌํด๋ฐ์ ์ฌ์ฉํ ์ง ์ ํ๋ ์ต์ ์ด๋ค. X๋ฅผ ์ข์ฐ๋ก, Y๋ฅผ Z ๊ฐ์ ์ฌ์ฉํ์ฌ ์ ์ง ํ์ง์ผ๋ก ์ฌ์ฉํ ๊ฒ์ด๋ฏ๋ก Vector2๋ฅผ ์ ํํด์คฌ๋ค. ์บ๋ฆญํฐ ์ด๋์ WASD ๋๋ ↑←→↓๋ฅผ ์ฌ์ฉํ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ํค ๋ฐ์ธ๋ฉ์ 4๊ฐ ํด์ผ ํ๋ค.
<No Biding>์ ํด๋น ํค์ ๋์๋๋ ํค๋ฅผ ์ค์ ํด์ฃผ์ง ์์๋ค๋ ๋ป์ด๋ค. ์ค์ ํด์ฃผ์. ๋จผ์ WASD์ ์ฌ์ฉ๋ ํค๋ถํฐ ๋ฐ์ธ๋ฉ์ ํด์ฃผ์. ์ด๋ฆ์ "WASD"๋ก ๋ฐ๊พธ๊ณ , Up ํค์ ์ฌ์ฉ๋ 'W' ํค๋ฅผ ์ ์ฉํด์คฌ๋ค.
๋ฐฉํฅํค ์ ๋ ฅ์ ๋ํด์๋ ์บ๋ฆญํฐ ์ด๋ ์ ๋ ฅ์ ๋ฐ์ ๊ฒ์ด๋ฏ๋ก ๋๊ฐ์ด ํ๋ ๋ ์์ฑํด์ ๋ง๋ค์ด์คฌ๋ค.
ํค ๋ฐ์ธ๋ฉ๊น์ง ๋ชจ๋ ๋๋ฌ๋ค. ์์ ์๋ Auto-Save๋ฅผ ๋๋ฅด๊ณ ๋ซ์์ค๋ค.
5. ์ ์ฉํ ๊ฒ์ ์ค๋ธ์ ํธ์ Player Input ์ปดํฌ๋ํธ ๋ถ์ด๊ธฐ
์ ์ฉํ ์บ๋ฆญํฐ์ Inspector ์ฐฝ์์ Add Component → "Player Input" ์ปดํฌ๋ํธ๋ฅผ ๋ถ์ฐฉํด์คฌ๋ค.
๊ทธ๋ฌ๋ฉด ํด๋น ๊ฒ์ ์ค๋ธ์ ํธ์ ๋ค์๊ณผ ๊ฐ์ ๋ฌธ์์ด ์๊ธด๋ค.
๊ทธ๋ฆฌ๊ณ Player Input ์ปดํฌ๋ํธ์ Actions์ ์๊น ๋ง๋ "PlayerActions" ํ์ผ์ ๋ฃ์ด์ค๋ค.
Default Schema๋ ๋์ค์ ๋น๋ํ ๋, ํ๊ฒ ํ๋ซํผ์ ๋ง๊ฒ ๋ค์๊ณผ ๊ฐ์ด ์ค์ ํด์ฃผ๋ฉด ๋๋ค.
๋ฌผ๋ก Any๋ก ์ค์ ํ๋ฉด ์์์ ์ค์ ๋๊ธด ํ๋ค. Default Map์ ํ์ฌ Player Input ์ปดํฌ๋ํธ๊ฐ ๋ถ์ฐฉ๋ ์ค๋ธ์ ํธ๊ฐ "์ฃผ์ธ๊ณต ์บ๋ฆญํฐ"์ด๋ฏ๋ก, ์๊น ์์ฑํ๋ "PlayerActions" Map์ ์ ํํด์ฃผ๋ฉด ๋๋ค.
๊ทธ ์ธ์๋ ์๋ฅผ ๋ค์ด, ํซ(Pet)์ ์กฐ์ข ํ๊ณ ์ถ๋ค๋ฉด, "PetActions" Map์ ์์ฑํด์ค์ ํค ๋ฐ์ธ๋ฉ์ ํด์ฃผ๊ณ , ํซ ์ค๋ธ์ ํธ์ ๋ถ์ฐฉํ์ฌ ์ค์ ํด์ฃผ๋ฉด ๋ ๊ฒ์ด๋ค.
์ด๋ก์จ, ํค ์ ๋ ฅ ์ ํ ์ ๋ค ๋์ด ๋ฌ๋ค. ์ด์ ์ ๋ ฅ ๋ฐ์ ํค ๋ด์ฉ์ ์คํฌ๋ฆฝํธ(script)์ ์ ๋ฌํ๊ณ , ๊ทธ ๊ฐ์ ๋ฐ๋ผ ์ฒ๋ฆฌ๋ฅผ ํ๋ ์ฝ๋ ์์ฑ ์์ ์ด ๋จ์๋๋ฐ, ๊ธ์ด ๊ธธ์ด์ก์ผ๋ฏ๋ก ๋ค์ ๊ธ์์ ๋ค๋ฃจ๋๋ก ํ๋ค.