์ธ๊ฒ์์์ GetAxis์ ํค๋ฅผ ๋ณ๊ฒฝ ๊ฐ๋ฅํ๊ฒ ํ๋ ค๊ณ ํ๋๋ฐ ์๋ฌด๋ฆฌ ์ฐพ์๋ด๋ GetAxis์ ํค๋ฅผ ์คํฌ๋ฆฝํธ๋ก ๋ณ๊ฒฝํ๋๋ฒ์ด ์๋์ด
์ง๊ธ์ ๊ทธ๋ฅ Axis ํด๋์ค๋ฅผ ๋ณ๋๋ก ๋ง๋ค์ด์ ์ฌ์ฉ์ค์ธ๋ฐ ์ด๋ป๊ฒ ์ ์ดํจ?
public float GetAxis(KeyCode left, KeyCodeRight) { bool leftInput = Input.GetKey(left); bool rightInput = Input.GetKey(right); return (leftInput ? -1 : 0) + (rightInput ? 1 : 0); } ๊ฑ ์ด๋ ๊ฒ ํ๋ฉด ๋๋๋ฐ?
๊ทธ๊ฑด GetAxisRaw์ง GetAxis์ฒ๋ผ -1~1 ์ฌ์ด์ ์์๊ฐ์ ๋ฐํํ์ง ์์๋
Mathf.MoveTowards๋ก ๋ค๋ฅธ ์คํฌ๋ฆฝํธ์์ ์ ์ด ํด๋๋ฉด ๋์ง ์๋?
MoveTowards๋ ๋๋ฌด ์ผ์ ํ ์๋๋ก ๊ฐ์ด ๋ณํด์ ๋ถ๋๋ฝ์ง๊ฐ ์์
๊ทธ๋ผ Lerp
๋ ์ฒ์์๋ ์ฒ์ฒํ ๊ฐ๋ค ์ ์ ๋นจ๋ผ์ง๋๊ฑธ ๊ตฌํํ๊ณ ์ถ์๊ฑฐ์. Smoothdamp ์จ๋ดค์ง๋ง getaxis๋ ๋ฌ๋ผ์ ์๋ก ํด๋์ค ๋ง๋ ๊ฑฐ
๋ณด๋๊น ์ด๋ฌ๋ฉด ๋์์ ๋ ฅ์ ๊ฐ์ด ๊ณ ์ ๋๋ ๋ฌธ์ ๋ ์๋๋ฐ
๋ด์ธํ ์ ์ฐ๋ ์ด์ ๊ฐ ์์?
Input [...] ๋งํ๋๊ฑฐ๋ฉด ๊ฑฐ๊ธฐ์ GetAxis ๊ฐ์๊ฒ ์์. ๋ด๊ฐ ์ํ๋๊ฑด ์ธ๊ฒ์์์ ๋งคํ๊ฐ๋ฅํ Input.GetAxis์
@ํํ ์ธํ ์์คํ ๋งํ๋๊ฑฐ๋ฉด
์๋๋..? context.ReadValue(); ์ด๊ฑด ๋ด ๊ฒ์์์๋ ์ฐ๋ ๊ฑฐ๊ณ ์กฐ์ด์คํฑ์ผ ๊ฒฝ์ฐ ์์์ 0~1 ์ ๋ ฅ์ธ๊ธฐ, ์๊ฐ์ ๋ฐ๋ผ ๋ฐ์์ด
๊ทธ๊ฑด ์กฐ์ด์คํฑ๋ง ๊ทธ๋ ๊ฒ ๋ฐ๋๊ฑฐ ์๋?
๋ญ ์๋์ด๋.. ๋๋ฅด๋ ์๊ฐ์ ๋น๋กํด์ 0๋ถํฐ 1๋ก ์ฆ๊ฐ/๊ฐ์๋๊ฒ ๋ง๋ค๋ฉด ๋์ง ๊ฐ์๋ ๋ค๋ฅด๊ฒ ํ๋ ค๋ฉด easing์ ์ข ์ถ๊ฐํ๊ณ Performed, Canceled๋ง ๊ฐ๊ณ ๋ ๋ง๋ค ์ ์์ ๊ฑฐ ๊ฐ์๋ฐ ์ด๊ฑธ ์ํ๋ ๊ฒ ์๋๊ฐ? ์์ฒ๋ผ ์ ์ฉํ๋ฉด ๊ธฐ์กด์ธํ์ด๋ ๋ญ ์ฐจ์ด๋ ์ถ๊ฒ ์ง๋ง ๋ด์ธํ์ชฝ์ด ํค ๋ฐ์ธ๋ฉ์ด ํจ์ฌ ์ฌ์
@211214 ๋ด๊ฐ ๋ง๋ ๊ฒ ๊ทธ๊ฑฐ์. Axis ํด๋์ค ์ฉ๋๊ฐ ๋๋ฅด๊ณ ์์ผ๋ฉด ์ ์ ๋นจ๋ผ์ง๋๊ฑฐ. ๋จ์ง GetAxis๋ ์ฆ๊ฐ ์๋๊ฐ ๋๊ฐ๊ฒ ํ๋ คํ๊ฑฐ์ง
@211214 ๊ทธ๋ฆฌ๊ณ ๋ด์ธํ์์ ํค ๋ฐ์ธ๋ฉ ์ ์ฉํด์ ์ฐ๋ ํด๋์ค์
์ด์ ๊ธ ์ฝ๋ ๋งํ๋ ๊ฑฐ๋ผ๋ฉด ์๋ง๋ด๋ ๋ ๊ฑฐ์์ธํ ๊ธฐ๋ฐ์ผ๋ก ๋ณด์ด๋๋ฐ..
@211214 ๊ฑฐ๊ธฐ ์ฌ์ฉ๋ฐฉ๋ฒ์ OnMove ํจ์ ์์์
@211214 ๋ด๊ฐ ๋ ๊ฑฐ์๋ ์ฌ์ฉ ๊ฐ๋ฅํ๊ฒ Keycode ๋ณ์๋ ๋ฃ์๊ฑฐ์ง ์๋๋ Input System ์ ์ฉ์. ๊ทธ๋ฆฌ๊ณ ๋ ๊ฑฐ์์์๋ GetAxis๋ ํค ๋ฐ์ธ๋ฉ์ ์คํฌ๋ฆฝํธ๋ก ๋งคํ์ด ์๋์ (๋ชป์ฐพ๋ ๊ฑฐ์ผ์๋ ์์) ๋ ๊ฑฐ์ ์ ์ฉ๋ ๋ง๋ ๊ฑฐ๊ณ
์ ๊ทธ OnMove๊ฐ ๋ด์ธํ์ด์์ด? ํ๋ผ๋ฏธํฐ๊ฐ ๋ฌ๋ผ์ ๋ชป์์๋ดค๋ค InputAction.CallbackContext context์ ๋ฐ์์ค๋ ํธ์ด ๋ ์ ์ฐํ ํ ๋ฐ
@211214 ๊ทธ๊ฑด ๋์ด ๋งํ๊ธฐ์ ์ ๋ชฐ๋๋ ๊ฑด๋ฐ ์๋ ค์ค์ ๊ณ ๋ง์ต๋๋ค. ๊ทผ๋ฐ ์ฝ๋ฐฑ ์ฐ๋ฉด ๋ญ ๋ ์ข์์ ์๋์?
@ํํ docs.unity3d.com/Packages/com.unity.inputsystem@1.15/manual/RespondingToActions.html ๋นํ์ฑํ, ๋๊ธฐ, ์์, ํ์ฑํ, ์ทจ์ ๋ฑ ์ฌ๋ฌ ์ฝ๋ฐฑ์ ์ธ ์ ์์ด ์ฐจ์ง, ์ฑ๋๋ง, ํ๋ฉ์ฒ๋ผ ์บ์คํ ํ์ ๊ตฌํํ ๋ ์ผ์ง
@211214 ํ๋ฒ ์ง์ ๊ฐ์ ๋ด์ผ๊ธ๋ค. ๊ณ ๋ง์์ด๋ค
๋ฐ๋๋ก ํ๊ณ ์๋ค ๋ ๊ฑฐ์ Axis์ ๋ณด๊ฐ์์ NewInput์ ์ ์ฉํ๊ธฐ๋งํ๋ฉด ๊ทธ๊ฒ NewInput์ฉ GetAxis๊ฐ ๋๋๊ฑด๋ฐ ์๊ตณ์ด ์ข๊ตฌ๋ฆฌ๊ณ ์ ๋ฐ์ดํธ๋ฐฉ์๋ฐ์ ์๋๋ ๋ ๊ฑฐ์๋ฅผ ์ฐ๋ ค๋๊ฑฐ์
์ ๊ธ ๋ณด๊ณ ์๋๋ฐ ๊ฑฐ์๋คํด๋จ๊ตฌ๋ง ๋ ์ ๊ธ์์ ์ข๋ง ๋ฐ๊พธ๋ฉด ๋จ ๊ทธ ํด๋์ค ์์ฒด๋ฅผ ๋ณด๊ฐ๋ float๊ฐ ๋ฆฌํดํ๋ ํํ๋ก ๋ง๋ค์ด์ผ์ง ์ ๋ชจ๋ ธํด๋์ค์์ ์ ๋ฐ์ดํธ ๋๋ ค์ฃผ๋๋ฐ๋ ๋ชจ๋ ธํด๋์ค ๋ด๋ถ์ ๋ ๋ฒกํฐ๋ณ์๋ฅผ ์ ์ธํด๋จ๋ ๊ทธ๊ฒ๋ ๋ด์ธํ ์ฝ๋ฐฑ์ผ๋ก ๊ฐ ์ ๋ํด์ฃผ๊ณ ์๊ณ
Axisํด๋์ค ์์ float axisValue ํ๋ ์ ์ธํด๋๊ณ UpdateAxis๋ฉ์๋์์ axisValue ๋ณด๊ฐํด์ ๊ณ์ฐํด์ฃผ๊ณ ํผ๋ธ๋ฆญ๋ฉ์๋ ํ๋ ๋นผ์ axisValue ๋ฆฌํดํ๋ฉด ๋์์ด ใ ใ ใ ์ด์งํผ ์์ฑ์์์ KeyCode ๋ฃ์ด์ฃผ๋๋ง NewInput์ผ๋ก ๋ฐ๊พธ๊ณ ์ถ์ผ๋ฉด KeyCode๋ฅผ InputAction์ผ๋ก ๋ฐ๊พธ๊ณ ์ ๋ฐ์ดํธ์์ ReadValue๋ฅผ ํด์ ๊ฐ์ ๋ฐ์์ ๊ทธ๋ผ InputAction๋ง ๋ฆฌ๋ฐ์ธ๋ํด์ฃผ๋ฉด ๊ทธ๊ฒ ํค๊ฐ๋ณ๊ฒฝ์ด์ง
@Indie2(211.202) ๊ทธ๊ฑฐ ํน์ private float value๋, public float GetValue() ๋งํ๋ ๊ฑด๊ฐ์? ์ด๋ฏธ ์๋๊ฑฐ ๊ฐ์๋ฐ์. ๊ทธ๋ฆฌ๊ณ Vector2 ๋ณ์ ์ ์ธํ ์ด์ ๋ ๊ทธ๊ฒ Axis ํ์ ๋ณ์๋ฅผ ์ฌ๋ฌ๊ฐ ๋ง๋๋ ๊ฒ๋ณด๋จ Vector2๋ฅผ ์ฌ๋ฌ๊ฐ ๋ง๋ค์ด์ public Axis move = new Axis(); ์ด๊ฑฐ ํ๋๋ก ๋ชจ๋ axis๋ค์ ๋ด๋นํ๊ฒ ๋ง๋ค๊ณ ์ถ์ด์ ๊ทธ๋ ๊ฒ ๋ง๋ ๊ฑฐ์์.