์–ด์ œ inputsystem๋•Œ๋ฌธ์— ๋นก์นœ๋‹ค๋Š” ๊ธ€ ๋ณด๊ณ  ๊ถ๊ธˆํ•ด์„œ ๋‚˜๋„ ์จ๋ด„ย 


ํ™•์‹คํ•˜๊ฒŒ ์•Œ์ง„ ์•Š์œผ๋ฏ€๋กœ ํ‹€๋ฆฐ์ ์žˆ์œผ๋ฉด ์ง€์ ํ™˜์˜



7cf3da36e2f206a26d81f6e041837764



์ˆ˜ํ–‰ํ•˜๋Š” ์ฃผ์ฒด๋Š” ํ”Œ๋ ˆ์ด์–ด, ์ˆ˜ํ–‰ํ•˜๋Š” ์•ก์…˜์€ ์ด๋™, ๋›ฐ๊ธฐ, ๊ฑท๊ธฐ์ธ๋ฐ ์—ฌ๊ธฐ์„  ๊ฑท๊ธฐ๋งŒ ์‚ดํŽด๋ณด๊ฒ ์Œ ๊ฑท๊ธฐ๋Š” Buttonํƒ€์ž…์œผ๋กœ ์„ค์ •ํ•จ



๋‹ค ํ•˜๊ณ  Save Asset์„ ๋ˆ„๋ฅด๋ฉด




7ef3da36e2f206a26d81f6e444817565



7ff3da36e2f206a26d81f6e745817365



์Šคํฌ๋ฆฝํŠธ๋ง๊ณ  ๋‚ด ๊ธฐ์ค€์œผ๋กœ PlayerInput์ด๋ผ๋Š” ํŒŒ์ผ ํ•˜๋‚˜๊ฐ€ ์ถ”๊ฐ€๋์„๊ฑฐ์ž„ ๋ˆ„๋ฅด๊ณ ย 


Generate C# Class ๋ˆ„๋ฅด๋ฉด PlayerInputC# ํด๋ž˜์Šค๊ฐ€ ์ƒ์„ฑ๋จ



๋‚ด๊ฐ€ ์ฐธ๊ณ ํ•œ ์˜์ƒ์—์„  ์–˜๋ฅผ ์ƒˆ๋กœ์šด ํด๋ž˜์Šค์—์„œ ๋ฉค๋ฒ„๋ณ€์ˆ˜๋กœ ์กฐ์ข…ํ•ด์„œ ๊ฐ–๋‹ค์ผ์Œ ๊ทธ๋ž˜์„œ GameInput ํด๋ž˜์Šค ์ƒ์„ฑํ•จ



์•ž์œผ๋กœ ํ”Œ๋ ˆ์ด์–ด์˜ ๋ชจ๋“  ํ‚ค ์ƒํ˜ธ์ž‘์šฉ์€ GameInput์„ ํ†ตํ•ด์„œ ์ด๋ค„์งˆ๊ฑฐ์ž„






79f3da36e2f206a26d81f6e24181736a




PlayerInput ํด๋ž˜์Šค๋Š” Monobehavior๋ฅผ ์ƒ์†๋ฐ›์ง€ ์•Š์œผ๋ฏ€๋กœ ์ง์ ‘ ๊ฐœ์ฒด๋ฅผ ์ƒ์„ฑํ•ด์„œ ๋ฉค๋ฒ„๋ณ€์ˆ˜๋กœ ๋ฐ•์•„๋„ฃ์Œ


๋‹ค๋ฅธ ์ค„์€ ๋ฌด์‹œํ•˜๊ณ  ๋จผ์ € ๋‚ด๊ฐ€ ํ™œ์„ฑํ™”ํ•˜๊ณ ์‹ถ์€ ์•ก์…˜์„ Enable ํ•ด์ค˜์•ผํ•จ





7cf3da36e2f206a26d81f6e041837764




๋‚˜๋Š” PlayerAction์„ ํ™œ์„ฑํ™”ํ•˜๊ณ ์‹ถ์œผ๋ฏ€๋กœ ํ•ด๋‹น๋ถ€๋ถ„์„ Enable ํ•ด์ฃผ๋ฉด ๋จ







79f3da36e2f206a26d81f6e24181736a




Awake๋กœ ๋‹ค์‹œ ๊ฐ€๋ณด๋ฉด Perform, started, canceled์— ํ•จ์ˆ˜๋“ค์„ ๊ตฌ๋…ํ•ด๋†จ๋Š”๋ฐ Walk๋Š” ๋ฒ„ํŠผ์œผ๋กœ ์„ค์ •ํ•ด๋†จ์Œ


์ฆ‰ Start, Perform์€ getKeyDown, Canceld๋Š” getkeyUp์ด๋ž‘ ๋งค์นญ๋จ


๊ทธ๋ž˜์„œ ๋‚ด๊ฐ€ ํ™œ์„ฑํ™”์‹œํ‚ค๊ณ  ์‹ถ์€ ์ด๋ฒคํŠธ๋ฅผ Action์œผ๋กœ ์ •์˜ํ•ด์คฌ๊ณ 





78f3da36e2f206a26d81f6e04381726f







7af3da36e2f206a26d81f6e04787756a



ํ”Œ๋ ˆ์ด์–ด์—์„  GameInput์— ์ •์˜ํ•ด๋†“์€ ์ด๋ฒคํŠธ๋“ค์— ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ์ˆ˜ํ–‰ํ•˜๋Š” ํ•จ์ˆ˜๋“ค์„ ๊ตฌ๋…ํ•ด๋†“์Œ




75f3da36e2f206a26d81f6e642837568





74f3da36e2f206a26d81f6e44086726d




์ž˜ ์ž‘๋™๋จ



๊ทผ๋ฐ Start๋ž‘ Perform์ด๋ž‘ ์ฐจ์ด๊ฐ€ ์—†๋Š”๊ฑฐ๊ฐ™์Œ ๋‘˜๋‹คย  GetKeydown์—ญํ• ์„ ์ˆ˜ํ–‰ํ•˜๋Š”๋ฐ ๋ญ” ์ฐจ์ด์ธ์ง€ ๋ชจ๋ฅด๊ฒ ์Œ









Press๋Š” ์–ด๋–ป๊ฒŒ ํ•˜๋А๋ƒ




7bf3da36e2f206a26d81f6e14485726c




์ด๊ฑด ๋”ฐ๋กœ ์ด๋ฒคํŠธ ์—†์ด IsPressed() ํ•จ์ˆ˜๊ฐ€ ๋งˆ๋ จ๋˜์–ด ์žˆ์–ด์„œ GameInput์—์„œ return ํ•ด์ฃผ๊ธฐ๋งŒ ํ•˜๋ฉด ๋จ





๋ฒ„ํŠผ์ด ์•„๋‹Œ ์ด๋™์€?








7cf3da36e2f206a26d81f6e04189766e





๋‘ ๋ฒˆ์งธ ์นธ action ์˜† +๋ฅผ ๋ˆ„๋ฅด๋ฉด ์ƒˆ๋กœ์šด ํƒญ์ด ํ•˜๋‚˜ ๋œธ


์—ฌ๊ธฐ์„  Move2๋ผ๊ณ  ์ด๋ฆ„์ง“๊ฒ ์Œ










7ff3da36e2f206a26d81f6e14488736c





ํ•ด๋‹น ์•ก์…˜์ด ๋ฑ‰์–ด๋‚ด๊ณ  ์‹ถ์€ ํƒ€์ž…์„ ์„ค์ •ํ•ด์ฃผ๋ฉด ๋˜๋Š”๋ฐ ์—ฌ๊ธฐ์„  ์ด๋™์„ ํ• ๊ฒƒ์ด๋ฏ€๋กœ value, ๊ฐ’์€ vector2๋ฅผ ์„ค์ •ํ–ˆ์Œ


๊ทธ๋ฆฌ๊ณ  Proccessors๋ฅผ ๋ณด๋ฉด ์•„๋งˆ ๋ฑ‰์–ด๋‚ด๋Š” ๊ฐ’์— ์ถ”๊ฐ€๋กœ ์–ด๋–ค ๊ฐ€๊ณต์„ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„์ธ๊ฑฐ ๊ฐ™์€๋ฐย 


์šฐ๋ฆฐ ๋ฐฉํ–ฅ๋งŒ ํ•„์š”ํ•˜๋ฏ€๋กœ normalized๋ฅผ ์„ค์ •ํ•ด์ฃผ๋ฉด ๋ฑ‰์–ด๋‚ด๋Š” ๊ฐ’์ด ์•Œ์•„์„œ normalized๋˜์„œ ํŠ€์–ด๋‚˜์˜ด ์Šคํฌ๋ฆฝํŠธ์—์„œ ๋”ฐ๋กœ ์•ˆํ•ด์ค˜๋„๋จ










7ef3c028e2f206a26d81f6e74186716c





๊ทธ๋ฆฌ๊ณ  Move2 ์˜†์˜ +๋ฅผ ๋ˆ„๋ฅด๋ฉด ํ‚ค ๋ฐ”์ธ๋”ฉ์ด ๋‚˜์˜ค๋Š”๋ฐ ํ•ด๋‹น ํ‚ค ๋ฐ”์ธ๋”ฉ์€ ๋‚ด๊ฐ€ value๊ฐ’์„ ์–ด๋–ค๊ฑธ ์„ค์ •ํ–ˆ๋А๋ƒ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง


์—ฌ๊ธฐ์„  2๋ฒˆ์งธ์ธ up down left right๋ฅผ ๋ˆ„๋ฅด๋ฉด





79f3c028e2f206a26d81f6e64488776e





์•Œ์•„์„œ ๋ญ ์„ค์ •ํ•ด์•ผํ• ์ง€ ๋ฑ‰์–ด๋ƒ„


ํ‚ค ์„ค์ •์€ Path๋ฅผ ๋ˆ„๋ฅด๊ณ  Listen์„ ๋ˆ„๋ฅด๋ฉด ์–ด๋–ค ํ‚ค๋ฅผ ์ž…๋ ฅ๋ฐ›์„์ง€ ๋Œ€๊ธฐ์ƒํƒœ๋กœ ๋“ค์–ด๊ฐ€๋Š”๋ฐ








78f3c028e2f206a26d81f6e74188756b



W๋ฅผ ๋ˆ„๋ฅด๋ฉด ์ด๋ ‡๊ฒŒ ๋‚˜์˜ด ์ €๊ฑฐ ํด๋ฆญํ•ด์ฃผ๋ฉด ๋









์จ๋จน๋Š”๊ฑฐ๋Š”



7cf3da36e2f206a26d81f6e44f87726e

์š”๋ ‡๊ฒŒ ReadValue๋กœ ์•ˆ์— ์ฝ์–ด์˜ฌ ๊ฐ’ ํƒ€์ž…๋งŒ ์„ค์ •ํ•ด์ฃผ๋ฉด ์•Œ์•„์„œ ์ฝ์–ด์˜ด




7ff3da36e2f206a26d81f6e746847469



๊ทธ๋Ÿผ ํ”Œ๋ ˆ์ด์–ด์—์„  ๊ฐ„๋‹จํžˆ ์จ๋จน๊ธฐ๋งŒ ํ•˜๋ฉด ๋จ