์‰ฝ๊ณ  ์„ฑ๋Šฅ์ข‹์€ ์ฝค๋ณด์‹œ์Šคํ…œ ์†Œ๊ฐœํ•ด๋ณผ๊นŒ ํ•ฉ๋‹ˆ๋‹ค. ์œ ๋‹ˆํ‹ฐ๋“  ์•„๋‹ˆ๋“  ์ƒ๊ด€์—†์Šต๋‹ˆ๋‹ค.

์ €์˜ ์ฝค๋ณด์‹œ์Šคํ…œ ์•„์ด๋””์–ด๋Š” ๋น„ํŠธ์—ฐ์‚ฐ์ž ์ž…๋‹ˆ๋‹ค.ย 

๋น„ํŠธ์—ฐ์‚ฐ์ž๋ฅผ ์ด์šฉํ•˜๋ฉด ๋น ๋ฅธ์„ฑ๋Šฅ์œผ๋กœ ์ปค๋งจ๋“œ ์™„์„ฑ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ• ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.ย 


์˜ˆ๋ฅผ๋“ค์–ด ํ‚ค์กฐํ•ฉ์ดย 

์œ„, ์•„๋ž˜, ์™ผ์ชฝ, ์˜ค๋ฅธ์ชฝ, ํŽ€์น˜, ๊ฐ•ํŽ€์น˜,ย ํ‚ฅ, ๊ฐ•ํ‚ฅย ์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ด๋ด…์‹œ๋‹ค.

64๋น„ํŠธ ์ •์ˆ˜์—์„œ 8๋น„ํŠธ * 8๋กœ ์•„๋ž˜์™€ ๊ฐ™์ด ์ชผ๊ฐค์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


0000 0001 ์œ„ย ย ย ย ย  ย ย 

0000 0001ย ์•„๋ž˜ย 

0000 0001ย ์™ผ์ชฝ

0000 0001ย ์˜ค๋ฅธ์ชฝ

0000 0001ย ํŽ€์น˜

0000 0001ย ๊ฐ•ํŽ€์น˜

0000 0001ย ํ‚ฅ

0000 0001ย ๊ฐ•ํ‚ฅ


๋งŒ์•ฝ ์™ผ์ชฝ ๋Œ€์‰ฌ๋ฅผ ๊ตฌํ˜„ํ•œ๋‹ค๊ณ  ํ•ฉ์‹œ๋‹ค.

์ฒซ๋ฒˆ์งธ ํ‚ค๋กœ ์™ผ์ชฝ์„ ๋ˆŒ๋ €์„๋•Œ๋Š”ย 

0000 0001

๋‘๋ฒˆ์งธ ํ‚ค๋กœ ์™ผ์ชฝ์„ ๋ˆŒ๋ €์„๋•Œ๋Š”

0000 0010


์ด๋ ‡๊ฒŒ ๋ฐœ์ƒ์‹œํ‚ค๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๋น„ํŠธ์—ฐ์‚ฐ |๋ฅผ ์ด์šฉํ•˜์—ฌ ํ•ฉ์นฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์™ผ์ชฝ๋Œ€์‰ฌ๋Š”
0000 0000

0000 0000

0000 0011
.... ์ดํ•˜ ์ƒ๋žตย 


๊ฐ’์ด ๋ฉ๋‹ˆ๋‹ค. ์œ ๋‹ˆํ‹ฐ๋กœ ์‹ค์ œ ๊ตฌํ˜„์„ ๋ณด์ž๋ฉด



public readonly static ulong ArrowLeftย  ย  = 0x10000;

ulong MakeCommand= 0;

MakeCommand |=ย ArrowLeft;

MakeCommand |= ArrowLeft <<1;


์ด๋Ÿฐ์‹์œผ๋กœ ๊ตฌํ•˜๋ฉด MakeCommand๋Š” ์™ผ์ชฝ ๋Œ€์‰ฌ์˜ ์ปค๋งจ๋“œ ๊ฐ’์ด ๋ฉ๋‹ˆ๋‹ค.

์‹ค์ œ ๊ตฌํ˜„๋ถ€๋ฅผ ๊ฐ„๋‹จํžˆ ์†Œ๊ฐœ๋“œ๋ฆฝ๋‹ˆ๋‹ค.



(ํŽธ์˜์ƒ ๊ฐ•ํŽ€์น˜, ๊ฐ•ํ‚ฅ์€ ์ƒ๋žตํ–ˆ์Šต๋‹ˆ๋‹ค.)

์œ„์™€ ๊ฐ™์ด 8๋น„ํŠธ ๊ฐ„๊ฒฉ์œผ๋กœ ๋–จ์–ด์ง„ ์ •์ˆ˜๋ฅผ ์ค€๋น„ ํ•ฉ๋‹ˆ๋‹ค.

CommandKeyList๋Š” ํŽธ์˜์ƒ ์œ ๋‹ˆํ‹ฐ์˜ Input.GetButtonDown ํ•จ์ˆ˜์˜ ์‚ฌ์šฉ์„ ์œ„ํ•ด ๋งŒ๋“ค์–ด ๋‘”๊ฒƒ์ž…๋‹ˆ๋‹ค.




๊ทธ๋ฆฌ๊ณ  ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ค€๋น„ํ•ฉ๋‹ˆ๋‹ค.


CommandCallBack์€ ์ปค๋งจ๋“œ๊ฐ€ ์™„์„ฑ๋˜๋ฉด ์ˆ˜ํ–‰ํ•  ์ฝœ๋ฐฑ ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค.

NowCommand๋Š” ์ปค๋งจ๋“œ๋ฅผ ์กฐํ•ฉํ•˜๋Š” ๋ณ€์ˆ˜ ์ž…๋‹ˆ๋‹ค.

CommandList๋Š” ์กฐํ•ฉ๋œ ์ปค๋งจ๋“œ ๋ชฉ๋ก์ž…๋‹ˆ๋‹ค.

CommandQueue๋Š” ํ˜„์žฌ ์ž…๋ ฅ๋œ ํ‚ค ๋ชฉ๋ก์ž…๋‹ˆ๋‹ค.

CommandTimming์€ ์ž…๋ ฅ๋œ ํ‚ค๊ฐ€ ๋‹ด๊ธด ํ๋ฅผ ์ฃผ๊ธฐ์ ์œผ๋กœ ์ œ๊ฑฐํ•˜๊ธฐ์œ„ํ•œ ๋น„๋™๊ธฐ๊ฐ์ฒด ์ž…๋‹ˆ๋‹ค.



Awake์—์„œ ์ปค๋งจ๋“œ ๋“ค์„ ์ดˆ๊ธฐํ™” ํ•ด์ค๋‹ˆ๋‹ค.

์•„๊นŒ์™€ ๊ฐ™์€ ์›๋ฆฌ ์ž…๋‹ˆ๋‹ค.ย 

RightDash, LeftDash, PowerAttack, JumpAttack์€ ์ด๋ฏธ ๋งŒ๋“ค์–ด๋‘” ๋ฉ”์†Œ๋“œ ์ž…๋‹ˆ๋‹ค.





Update ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค.

GetButtonDown์œผ๋กœ ํ‚ค์ž…๋ ฅ์ด ๋“ค์–ด์™”์„๋•Œ

NowCommand |= pair.Value << CommandQueue.Count;๋ฅผ ํ•ฉ๋‹ˆ๋‹ค.

์ฆ‰, ์ž…๋ ฅ์ˆœ์„œ์— ๋”ฐ๋ผ ์ปค๋งจ๋“œ๋ฅผ ์กฐํ•ฉํ•ฉ๋‹ˆ๋‹ค.


์œ„๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” ์ˆœ์„œ๊ฐ€ ์—†์œผ๋ฉด ( <<ย CommandQueue.Count๋ฅผ ํ•˜์ง€ ์•Š์œผ๋ฉด )ย 

๋‹น์—ฐํžˆ ํ‚ค์กฐํ•ฉ์ด ์ˆœ์„œ์™€ ์ƒ๊ด€์—†์ด ์ ์šฉ๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์ฆ‰ <- -> ํŽ€์น˜, ํŽ€์น˜ -> <- ๋ฅผ ํ•ด๋„ ๋˜‘๊ฐ™์€ ์ปค๋งจ๋“œ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.




๊ทธ๋ฆฌ๊ณ  ์ฝ”๋ฃจํ‹ด์ž…๋‹ˆ๋‹ค. ๋ณด์‹œ๋ฉด์•„์‹œ๊ฒ ์ง€๋งŒ NowCommand ์ดˆ๊ธฐํ™”์™€ ๋‹จ์ˆœ ํ๋ฅผ ๋น„์›Œ๋‘๋Š” ์ฝ”๋ฃจํ‹ด ์ž…๋‹ˆ๋‹ค.

์ปค๋งจ๋“œ๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ๊ทœ์น™์€ ํ•„์š”์— ๋”ฐ๋ผ ๋กœ์ง์„ ๋ณ€๊ฒฝํ• ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.




๊ทธ๋ƒฅ ๊ฐ„๋‹จํžˆ ์‹ฌ์‹ฌํ•ด์„œ ๊ตฌํ˜„ํ•ด๋ดค๊ตฌ์š”. ๋„์›€์ด ๋˜์…จ์œผ๋ฉด ํ•ฉ๋‹ˆ๋‹ค, ๋ฆฌ์ŠคํŠธ ๊ฐ™์€๊ฑธ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ๋น„ํŠธ์—ฐ์‚ฐ์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„ฑ๋Šฅ์€ ๊ฝค๋‚˜ ์ข‹์Šต๋‹ˆ๋‹ค.ย 

๋‹จ์ ์ด ์žˆ๋‹ค๋ฉดย ๋น„ํŠธ์—ฐ์‚ฐ์ž๋ฅผ ํ†ตํ•œ ์ปค๋งจ๋“œ ์„ค๊ณ„๋Š” ์ตœ๋Œ€ ํ‚ค์™€ ์ˆœ์„œ์˜ ๊ฒฝ์šฐ์˜์ˆ˜๊ฐ€ 64๊นŒ์ง€๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์  ์ž…๋‹ˆ๋‹ค.