๐ŸŽฎGame Development/Unity ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ

ํ•ด๋‹น ๊ธ€ 18๊ฑด

/* ์ˆ˜์—… ๋“ค์œผ๋ฉฐ ํ–ˆ๋˜ ๋‚ด์šฉ๋“ค์„ ์‹ค์Šตํ•ด๋ณด๋ฉฐ ์ •๋ฆฌํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. ์ž˜๋ชป๋œ ๋ถ€๋ถ„์ด ์žˆ๋‹ค๋ฉด ๋ง์”€ํ•ด์ฃผ์„ธ์š”. */ ๊ฒŒ์ž„์€ ํŠน์ • ํ”Œ๋žซํผ ํ•˜๋‚˜๋งŒ์„ ๊ฒจ๋ƒฅํ•˜๊ณ  ๊ฐœ๋ฐœํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ๊ฑฐ์˜ ์—†๋‹ค. ์Šค์ผ€์ผ์ด ์ปค์ง€๊ฒŒ ๋˜๋ฉด PC ๋ง๊ณ ๋„ ๋ชจ๋ฐ”์ผ, ์ฝ˜์†” ๋“ฑ์˜ ํ”Œ๋žซํผ๋„ ์ง€์›์„ ํ•ด์•ผ ํ• ํ…๋ฐ, ๊ทธ ์ค‘์—์„œ๋„, ๊ธฐ์กด Unity Input System์€ ๊ฒŒ์ž„ ํ”Œ๋žซํผ ํ™˜๊ฒฝ ์„œ๋น„์Šค๋ฅผ ์ถ”๊ฐ€ํ•  ๋•Œ ๊ณจ๋จธ๋ฆฌ๋ฅผ ์•“๊ฒŒํ•˜๋Š” ์š”์†Œ๋ผ๊ณ  ํ•œ๋‹ค. PC์—์„œ๋Š” ํ‚ค๋ณด๋“œ์™€ ๋งˆ์šฐ์Šค, ๋ชจ๋ฐ”์ผ์€ ํ™”๋ฉด ํ„ฐ์น˜, ์ฝ˜์†”์—์„œ๋Š” ์กฐ์ด์Šคํ‹ฑ์„ ์ด์šฉํ•˜๋Š” ๋“ฑ ํ”Œ๋žซํผ๋งˆ๋‹ค ์‚ฌ์šฉํ•˜๋Š” ์ž…๋ ฅ ๋ฐฉ์‹์ด ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ฆ‰, ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ฝ”๋“œ๋ฅผ ์งœ๊ฒŒ ๋˜๋ฉด ํ”Œ๋žซํผ ์ถ”๊ฐ€ ํ™•์žฅํ•  ๋•Œ ๊ฒŒ์ž„ Input System์„ ์ˆ˜์ •ํ•ด์•ผ ํ•˜๋Š” ๋ฒˆ๊ฑฐ๋กœ์›€์ด ์ƒ๊ธด๋‹ค. if(Input.GetKey(KeyCode.UpArrow)) // PC์—์„œ ..

์ (Enemy) ๊ฒŒ์ž„ ์˜ค๋ธŒ์ ํŠธ์— ํƒ์ง€(Detect)๋ฅผ ๋‹ด๋‹นํ•˜๋Š” ์ฝœ๋ผ์ด๋”๋ฅผ ๋‹ฌ์•„ ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ํ˜„์žฌ ์  ์˜ค๋ธŒ์ ํŠธ ํƒ์ง€ ์˜์—ญ ์•ˆ์— ์žˆ๋Š”์ง€ ์ฒดํฌํ•˜๋Š” ๋กœ์ง์„ ๊ตฌํ˜„ํ•˜๋ ค๊ณ  ํ–ˆ์—ˆ๋‹ค. ํƒ์ง€๋งŒ ํ•˜๊ณ , ์ถฉ๋Œ ์ฒ˜๋ฆฌ๋Š” ํ•˜๋ฉด ์•ˆ ๋˜๋‹ˆ ์ฝœ๋ผ์ด๋”์˜ Is Trigger ๋ชจ๋“œ๋ฅผ ํ™œ์šฉํ–ˆ๋‹ค. ๊ตฌํ˜„ํ•˜๊ณ ์ž ํ–ˆ๋˜ ๋กœ์ง ๋ฐ ์ค€๋น„ ์ž‘์—… ์ ์€ ํ‰์ƒ์‹œ ์ƒํƒœ(Idle)๋กœ ์—ฌ๊ธฐ ์ €๊ธฐ๋ฅผ ๋Œ์•„๋‹ค๋‹˜ ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ์ ์˜ ํƒ์ง€ ์˜์—ญ์— ์ฒ˜์Œ ๋“ค์–ด์˜จ๋‹ค๋ฉด, ์ ์€ ๊ฒฝ๊ณ„ ๋ชจ๋“œ๋กœ ๋Œ์ž… ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ๊ณ„์† ์ ์˜ ํƒ์ง€ ์˜์—ญ์— 2์ดˆ ์ด์ƒ ๋จธ๋ฌด๋ฅด๊ณ  ์žˆ๋‹ค๋ฉด, ๋น ๋ฅด๊ฒŒ ๋Œ์ง„ํ•˜์—ฌ ๊ณต๊ฒฉํ•˜๋Š” ๊ณต๊ฒฉ ๋ชจ๋“œ ๋Œ์ž… ์ ์ด ๊ณต๊ฒฉ ๋ชจ๋“œ๋กœ ๋Œ์ž… ์ „์— ํƒ์ง€ ์˜์—ญ์—์„œ ๋‚˜๊ฐ„๋‹ค๋ฉด, ๋‹ค์‹œ ํ‰์ƒ์‹œ ์ƒํƒœ๋กœ ๋Œ์ž… ๋ฆฌ์†Œ์Šค๋Š” ์—†๊ณ , ๋กœ์ง๋งŒ ๋จผ์ € ๊ตฌํ˜„ํ•ด๋ณด๋ ค๊ณ  ํ•ด์„œ ์บก์Š์„ ์ (Enemy), ์‚ฌ๊ฐํ˜•์„ ํ”Œ๋ ˆ์ด์–ด(Player)๋กœ ์„ค์ •ํ–ˆ๋‹ค. ..

/* ๋ณธ ๊ธ€์€ Unity 2020.3.25f1 LTS ๋ฒ„์ „์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. */ ์œ ๋‹ˆํ‹ฐ 2D ํ”„๋กœ์ ํŠธ์—์„œ ์ผ๋ฐ˜์ ์ธ ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” ์กฐ๋ช… ์ฒ˜๋ฆฌ๊ฐ€ ๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์‚ฌ์‹ค์„ ๋ฐœ๊ฒฌํ–ˆ๋‹ค. ๊ตฌ๊ธ€์— ๊ฒ€์ƒ‰ ํ•ด๋ณด๋ฉฐ ์ฐพ์•„๋ณด๋‹ˆ, 2D์—์„œ๋Š” ๋น›(Light)์ด ์กด์žฌํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋น›์„ ํ‰๋‚ด๋‚ด๋Š” ์—ฌ๋Ÿฌ ๊ธฐ๋ฒ•๋“ค๋กœ ํ‘œํ˜„์„ ํ•ด์™”๋‹ค๊ณ  ํ•œ๋‹ค. ๊ด‘์›์— ๊ฐ€๊นŒ์ด ์žˆ๋Š” ์ •์ (Vertex)์€ ๋ฐ๊ฒŒ ํ•˜๊ณ , ๋ฉ€๋ฆฌ ์žˆ๋Š” ์ •์ ์€ ์–ด๋‘ก๊ฒŒ ํ•˜๊ฑฐ๋‚˜ Material์˜ Shader ์„ค์ •์„ "Sprite/Diffuse"๋กœ ๋ฐ”๊ฟ”์ฃผ๋Š” ๋“ฑ์˜ ๊ธฐ๋ฒ•์„ ํ†ตํ•ด ๋น›์˜ ์ฒ˜๋ฆฌ๋ฅผ ํ‘œํ˜„ํ•ด์™”๋‹ค๊ณ  ํ•œ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ, ์œ ๋‹ˆํ‹ฐ 2D์—์„œ๋„ ์ด์ œ ๋น› ์ฒ˜๋ฆฌ์— ๋Œ€ํ•œ ํŒจํ‚ค์ง€๋ฅผ ์ง€์›์„ ํ•œ๋‹ค. URP(Universal Render Pipeline)์ด๋‹ค. ์ด์ „ ๋ฒ„์ „์€ ๊ฒฝ๋Ÿ‰ ๋ Œ๋” ํŒŒ์ดํ”„๋ผ์ธ(LWRP)์ด๋ผ๊ณ  ๋ถˆ..

C#์—์„œ ๊ตฌ์กฐ์ฒด๋Š” ๊ฐ’ ํ˜•์‹(value type)์ด๊ธฐ์—, ์Šคํƒ(stack)์— ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ๋ณ€์ˆ˜ ์ฒด๊ณ„๋‹ค. ๋ ˆํผ๋Ÿฐ์Šค ํ˜•์‹(reference type)์€ ์‹ค์ œ ๋ฐ์ดํ„ฐ๋Š” ํž™(Heap) ์˜์—ญ์— ์กด์žฌํ•˜๊ณ , ์Šคํƒ(Stack)์—๋Š” ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋กœ ๊ฐ€๋Š” ์ฃผ์†Œ๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ๋ณ€์ˆ˜ ์ฒด๊ณ„๋‹ค. ๊ฒฐ๋ก ์ ์œผ๋กœ Vector3, Vector2๋Š” ๊ตฌ์กฐ์ฒด์ด๊ธฐ์— ์ง€์—ญ ๋ณ€์ˆ˜๋กœ ์ƒ์„ฑํ•œ ๊ฒฝ์šฐ, ๋กœ์ง์ด ๋๋‚˜๋Š” ๋ธ”๋ก(block)์„ ๋งŒ๋‚˜๊ฒŒ ๋˜๋ฉด ์ž๋™ ๋ฉ”๋ชจ๋ฆฌ ๋ฐ˜๋‚ฉ ์ฒ˜๋ฆฌ๊ฐ€ ๋œ๋‹ค. void Update() { Vector3 vec3 = new Vector3(); Vector2 vec2 = new Vector2(); } // ๋๋‚˜๋Š” ๋ธ”๋ก์„ ๋งŒ๋‚ฌ์œผ๋ฏ€๋กœ, vec3, vec2 ๋ฉ”๋ชจ๋ฆฌ ๋ฐ˜๋‚ฉ C#์€ ํž™ ํ• ๋‹น์„ ํ•˜๋Š” ํด๋ž˜์Šค ๊ฐ์ฒด ์ƒ์„ฑ๊ณผ ํ—ท๊ฐˆ๋ฆฌ๊ฒŒ ์™œ ์ด๋Ÿฐ new ๋ฌธ๋ฒ•์„..

1. ์Šคํ”„๋ผ์ดํŠธ ๋ Œ๋”๋Ÿฌ(Sprite Renderer)์˜ Flip ์†์„ฑ ์ด์šฉ Flip ์†์„ฑ์„ ํ†ตํ•ด X์ถ•, Y์ถ•, ํ˜น์€ ๋‘˜ ๋‹ค ๋ฐ˜์ „์— ๋Œ€ํ•œ ์ถ•์œผ๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ, ๋ Œ๋”๋ง๋งŒ ์˜ํ–ฅ์„ ๋ฐ›๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค. ๋‹ค์Œ์€ 2D Capsule ๊ฒŒ์ž„ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ํ•˜๋‚˜ ์ƒ์„ฑํ•˜๊ณ , ํ•˜์œ„ ์ž์‹์œผ๋กœ 2D Circle ๊ฒŒ์ž„ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•ด์„œ ๋„ฃ์–ด๋†จ๋‹ค. ์บก์Š์€ ์ƒํ•˜์ขŒ์šฐ ๋ชจ๋‘ ๋ฐ˜์ „์— ๋Œ€ํ•ด ๋Œ€์นญ์ด๋ฏ€๋กœ ๊ตฌ๋ถ„์„ ํ•  ์ˆ˜ ์žˆ๊ฒŒ, ๋‹ค๋ฅธ ๋ชจ์–‘์œผ๋กœ Sprite๋ฅผ ๋ฐ”๊ฟ”๋†จ๋‹ค. ์œ ๋‹ˆํ‹ฐ๋ฅผ ํ†ตํ•ด ์œ„์™€ ๊ฐ™์ด ์‹คํ—˜์„ ์ง„ํ–‰ํ–ˆ๋‹ค. ๋ณด๋ฉด ์•Œ๊ฒ ์ง€๋งŒ, 2D Capsule ๊ฒŒ์ž„ ์˜ค๋ธŒ์ ํŠธ์˜ ๋ Œ๋”๋ง ๋ถ€๋ถ„๋งŒ ์˜ํ–ฅ์„ ๋ฏธ์นœ๋‹ค. ํ•˜์œ„ ์ž์‹์œผ๋กœ ์ƒ์„ฑํ–ˆ๋˜ 2D Circle ๊ฒŒ์ž„ ์˜ค๋ธŒ์ ํŠธ๋Š” ์•„๋ฌด๋Ÿฐ ์˜ํ–ฅ์ด ์—†๋Š” ๊ฑธ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ, Sprite Renderer์˜ Flip ๊ธฐ๋Šฅ์„..