๐ŸงพDev Log/[Unity 3D] ์นด๋ก  ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ

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

๋กœ๊ทธ๋ผ์ดํฌ ๊ฒŒ์ž„์ด๋‹ˆ, ๋ฌด๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ชฌ์Šคํ„ฐ๋“ค์„ ๋•Œ๋ ค์žก์„ ์ˆ˜ ์žˆ์–ด์•ผ ํ•  ๊ฒ๋‹ˆ๋‹ค. ๊ทธ๋งŒํผ ๋ฌด๊ธฐ๋ผ๋Š” ๊ฒƒ์ด ์šฐ๋ฆฌ ๊ฒŒ์ž„์—์„œ ํ•ต์‹ฌ์ด ๋œ๋‹ค๋Š” ์–˜๊ธฐ์ฃ . ์šฐ์„  ์šฐ๋ฆฌ ๊ฒŒ์ž„์˜ ๊ธฐ๋ณธ ๋ฌด๊ธฐ์ธ "์นด๋ก ์˜ ๋…ธ(Charon's Paddle)"๋กœ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•ด๋ณผ ๊ฒ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ๊ทธ ๊ธฐ๋ฐ˜๋งŒ ๋จผ์ € ๋‹ค์ ธ๋ณผ๊นŒ ํ•ด์š”! ์†”์งํžˆ ๋งํ•ด์„œ ๋ฌด๊ธฐ๊ฐ€ ๋…ธ์ฒ˜๋Ÿผ ์ƒ๊ธฐ์ง„ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๊ตฌ๋งคํ–ˆ๋˜ ๋ฌด๊ธฐ ์—์…‹ ์ค‘์— ๊ทธ๋‚˜๋งˆ ๋…ธ ๊ฐ™์ด ์ƒ๊ธด ๊ฑธ๋กœ ์ฅ์–ด ์ฃผ์—ˆ์–ด์š”... ๊ทธ๋ฆฌ๊ณ  ๊ฒŒ์ž„ ๊ทธ๋ž˜ํ”ฝ์ด ๋„ˆ๋ฌด ๋ฐ‹๋ฐ‹ํ•œ ๊ฒƒ ๊ฐ™์•„์„œ URP(Universal Render Pipeline)์œผ๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ์—…๊ทธ๋ ˆ์ด๋“œ ํ•˜๊ณ  ์‹ถ์—ˆ๋Š”๋ฐ, ์ปค์Šคํ…€ ์‰์ด๋”(Custom shader)๋Š” URP Shader๋กœ ์ž๋™ ๋ณ€ํ™˜์ด ์•ˆ ๋˜๋”๋ผ๊ตฌ์š”. ํ˜„์žฌ ๊ตฌ์ž…ํ–ˆ๋˜ ์—์…‹ ์ค‘์— ๋ฌผ๊ณผ ๊ฒ€๊ธฐ ์ดํŽ™ํŠธ ์—์…‹์ด ์ปค์Šคํ…œ ์‰์ด๋”..

๋ชจ๋“ˆํ™”์˜ ํ•„์š”์„ฑ์„ ๋Š๋ผ๋‹ค ๊ธฐ์กด PlayerController ์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ†ตํ•ด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด, ๊ธฐ์กด ์†Œ์Šค์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•ด์•ผ ํ•ด์„œ ํ™•์žฅ์ด ์–ด๋ ค์› ์Šต๋‹ˆ๋‹ค. ์ €ํฌ ๊ฒŒ์ž„์—๋Š” ๋Œ€์‹œ, ๋Œ€์‹œ ๊ณต๊ฒฉ, ์ฐจ์ง€ ๊ณต๊ฒฉ, ๊ธฐ๋ณธ ๊ณต๊ฒฉ ์ฝค๋ณด 3ํƒ€ ๋“ฑ๋“ฑ ํ•œ ์ƒํƒœ์—์„œ ๋‹ค๋ฅธ ์ƒํƒœ๋กœ ๋ถ„๊ธฐ๋˜๋Š” ๋™์ž‘๋“ค์ด ๋งŽ์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ง€๊ธˆ ์ฝ”๋“œ ๊ตฌ์กฐ๋กœ ๊ณ„์† ํ™•์žฅํ•˜๋‹ค๊ฐ€๋Š” ์„ธ๊ณ„ ์ œ์ผ์˜ ์ŠคํŒŒ๊ฒŒํ‹ฐ๋ฅผ ๋งŒ๋“ค ๊ฒƒ ๊ฐ™์•„์„œ ๊ตฌ์กฐ ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์ „์— ๋””์ž์ธ ํŒจํ„ด(Degisn Pattern)๋“ค์„ ๋ณด๋˜ ์ค‘, ์ƒํƒœ ํŒจํ„ด(State Pattern)์„ ์ ์šฉํ•˜๋ฉด Controller์˜ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒŒ ๊ต‰์žฅํžˆ ์‰ฌ์šธ ๊ฒƒ ๊ฐ™์•˜์Šต๋‹ˆ๋‹ค. ์ œ๊ฐ€ ์–ด๋–ค ์‹์œผ๋กœ ๊ตฌ์กฐ๋ฅผ ๋ฐ”๊พธ์—ˆ๋Š”์ง€ ์•„๋ž˜์—์„œ ๋ณด๋ฉด์„œ ์ฒœ์ฒœํžˆ ์„ค๋ช…ํ•ด ๋“œ๋ฆด๊ฒŒ์š”. 1. ๋ชจ๋“  ์ƒํƒœ๋“ค์˜ ๊ธฐ์›์ด ๋˜๋Š” ๋ถ€๋ชจ ์ถ”์ƒ ํด๋ž˜์Šค, Bas..

์˜ค๋žœ๋งŒ์— ๋‹ค์‹œ ์นด๋ก (Charon) ๊ฒŒ์ž„ ํ”„๋กœ์ ํŠธ ๊ธ€์„ ์˜ฌ๋ฆฌ๋Š” ๊ฒƒ ๊ฐ™๋„ค์š”. ๊ทธ๋™์•ˆ ์ด๊ฒƒ์ €๊ฒƒ ๋˜ ์—ด์‹ฌํžˆ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋น„๋ก ์ปดํ“จํ„ฐ๊ณตํ•™๊ณผ 4ํ•™๋…„์ด์ง€๋งŒ ํ•™๊ณผ MT๋ฅผ ๊ฐ€๋ณด๊ธฐ๋„ ํ•˜๊ณ , ์ถ”์„ ํ• ์ธ ์„ธ์ผ์„ ํ•˜๊ธธ๋ž˜ ์ธํ”„๋Ÿฐ์—์„œ ๊ฐ•์˜ 2๊ฐœ๋ฅผ ์‚ฌ์„œ ์กฐ๊ธˆ์”ฉ ๋ณด๊ธฐ๋„ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ์Šฌ์Šฌ ์กธ์—… ์ž‘ํ’ˆ ๋ฐœํ‘œ ๊ธฐํ•œ๋„ ๋‹ค๊ฐ€์˜ค๋Š” ์ง€๋ผ, ๊ฐœ๋ฐœ ๊ณ„ํš ๋ฐ ๋ฒ”์œ„๋ฅผ ๋‹ค์‹œ ์žฌ์กฐ์ •ํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค๊ณ  ๋Š๊ปด ์ €๋ฒˆ ์ฃผ์— ํšŒ์˜๋ฅผ ์ง„ํ–‰ํ–ˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ํ•œ๋™์•ˆ์€ ์นด๋ก (Charon) ํ”„๋กœ์ ํŠธ์™€ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๊ฒŒ์‹œ๊ธ€์ด ์ฃผ๋ฅผ ์ด๋ฃจ๊ฒ ๋„ค์š”. ์ด๋ฒˆ ์ฃผ์— ์ œ๊ฐ€ ๋งก์€ ๊ฐœ๋ฐœ์€ ์บ๋ฆญํ„ฐ์˜ ๋Œ€์‹œ(Dash) ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ์‚ฌ์‹ค ์ €๋ฒˆ์— ์ด๋ฏธ ๊ตฌํ˜„ํ–ˆ๋˜ ๊ธฐ๋Šฅ์ด์ง€๋งŒ, ๋ฌธ์ œ์ ๋“ค์ด ๋งŽ์•˜๋˜ ๊ด€๊ณ„๋กœ ์ˆ˜์ •์„ ํ•ด ๋‚˜๊ฐ”์ง€์š”. ์ถ”๊ฐ€) 2023-11-24 ๋ณธ ๊ธ€๊ณผ ๊ฐ™์ด ๋งŒ๋“  ๋Œ€์‹œ๋Š” ๋ถ€์ž์—ฐ์Šค๋Ÿฝ๊ธฐ ๋•Œ๋ฌธ์—, ๋ฆฌํŒฉํ† ๋ง์„ ์ง„ํ–‰..

์˜ค๋žœ๋งŒ์— ๋‹ค์‹œ ํฌ์ŠคํŒ…์„ ์˜ฌ๋ฆฌ๋„ค์š”. ๊ทธ๋™์•ˆ ๋‹ค๋ฅธ ๊ต์œก ํ”„๋กœ๊ทธ๋žจ์„ ๋“ฃ๋Š”๋‹ค๊ณ  ๋ฐ”๋น ์„œ ์นด๋ก  ๊ฐœ๋ฐœ์„ ๋ชป ํ–ˆ์Šต๋‹ˆ๋‹ค. FPS ๊ฒŒ์ž„ ๊ฐœ๋ฐœ์€ ์ฒ˜์Œ ์ง„ํ–‰ํ•ด๋ดค๋Š”๋ฐ, ์–ด๋ฆด ๋•Œ ์นด์šดํ„ฐ์ŠคํŠธ๋ผ์ดํฌ ์˜จ๋ผ์ธ ์ข€๋น„ ์‹œ๋‚˜๋ฆฌ์˜ค ๋ชจ๋“œ๋ฅผ ์ข‹์•„ํ–ˆ๋˜ ๊ธฐ์–ต์„ ๋˜์‚ด๋ ค ์žฌ๋ฏธ์žˆ๊ฒŒ ๋งŒ๋“ค์—ˆ๋˜ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋‚˜์ค‘์— ๊ธฐํš์„ ์ œ๋Œ€๋กœ ํ•ด์„œ ์‚ฌ์ด๋“œ ํ”„๋กœ์ ํŠธ๋กœ ํ•˜๋‚˜ ์ง„ํ–‰ํ•ด๋ณด๊ณ  ์‹ถ๋„ค์š”. ๋ฉ€ํ‹ฐ ํ”Œ๋ ˆ์ด๋„ ๋œ๋‹ค๋ฉด ๊ธˆ์ƒ์ฒจํ™”๊ฒ ์ง€๋งŒ ๊ทธ๊ฑฐ๊นŒ์ง€ ํ•˜๋ ค๋ฉด ๊ฐˆ ๊ธธ์ด ๊ต‰์žฅํžˆ ๋ฉ€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.ใ…Žใ…Žใ…Ž... ์žก๋‹ด์€ ์—ฌ๊ธฐ๊นŒ์ง€ ํ•˜๋„๋ก ํ•˜๊ณ , ์ €๋ฒˆ ๊ธ€์—์„œ๋Š” ์ด๋™ ์• ๋‹ˆ๋ฉ”์ด์…˜ ์‹ฑํฌ ๋งž์ถ”๋Š” ๊ฒƒ๊นŒ์ง€ ํ–ˆ์—ˆ์ฃ ? ํ‰์ง€์—์„œ๋Š” ์•„๋ฌด๋Ÿฐ ๋ฌธ์ œ๊ฐ€ ์—†์—ˆ์ง€๋งŒ ๊ณ„๋‹จ๊ณผ ๊ฐ™์€ ๊ฒฝ์‚ฌ ์ง€ํ˜•์ธ ๊ฒฝ์šฐ์—๋Š” ์ˆ˜๋งŽ์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์†์„ ๋ด์•ผํ•  ๋‚ด์šฉ๋“ค์ด ์ข€ ๊ต‰์žฅํžˆ ๋งŽ์•˜์–ด์š”. ๊ทธ๋ž˜๋„ ํ•˜๋‚˜ํ•˜๋‚˜ ์ฐพ์•„๋ณด๋ฉฐ ๊ณต๋ถ€ํ–ˆ๊ธฐ์— ๋‚˜๋ฆ„ ์˜๋ฏธ์žˆ๋Š” ์‹œ๊ฐ„..

1. ์• ๋‹ˆ๋ฉ”์ด์…˜ ๊ฐ€์ ธ์˜ค๊ธฐ ์บ๋ฆญํ„ฐ ๋ชจ๋ธ์ด ํœด๋จธ๋…ธ์ด๋“œ๊ฐ€ ์•„๋‹ˆ๋ผ์„œ ๋ฆฌํƒ€๊ฒŸํŒ…์„ ๋ชป ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์ €๋Š” ์—์…‹ ์Šคํ† ์–ด์—์„œ ์บ๋ฆญํ„ฐ ๋ชจ๋ธ์„ ์ƒ€๊ณ , Humonoid Animation Retargeting์„ ์ด์šฉํ•˜์—ฌ Mixamo ์‚ฌ์ดํŠธ์— ์žˆ๋Š” ์• ๋‹ˆ๋ฉ”์ด์…˜๋“ค์„ ์žฌ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ, ๊ตฌ๋งคํ•œ ์—์…‹์ด ํœด๋จธ๋…ธ์ด๋“œ ๋ชจ๋ธ์ด ์•„๋‹ˆ๋”๋ผ๊ตฌ์š”. ๊ทธ๋ž˜์„œ Mixamo ์‚ฌ์ดํŠธ ์• ๋‹ˆ๋ฉ”์ด์…˜๋“ค์„ ์ ์šฉํ•˜์งˆ ๋ชป ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ์กด ํœด๋จธ๋…ธ์ด๋“œ ๋ผˆ๋Œ€ ๊ตฌ์กฐ์™€ ๊ตฌ๋งคํ•œ ์—์…‹์˜ ๋ผˆ๋Œ€ ๊ตฌ์กฐ๊ฐ€ ๋‹ฌ๋ž๊ธฐ์—, ๋งค์นญ์ด ์•ˆ ๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋”๋ผ๊ตฌ์š”. ๊ทธ๋ž˜์„œ ๊ทธ๋ƒฅ 3D ํˆด(Blender, Maya ๊ฐ™์€)์— ๊ฐ€์ ธ์™€์„œ ๋ผˆ๋Œ€๋ฅผ ๋ชจ๋‘ ์ œ๊ฑฐ ํ›„, Mixamo ์‚ฌ์ดํŠธ์— ์˜คํ†  ๋ฆฌ๊น…(Auto Rigging)์ด๋ผ๋Š” ๊ธฐ๋Šฅ์„ ์ด์šฉํ•˜์—ฌ ์ž๋™์œผ๋กœ ํœด๋จธ๋…ธ์ด๋“œ ๋ผˆ๋Œ€ ๊ตฌ์กฐ๋ฅผ ๋“ฑ๋กํ•ด ์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ „์—..

๋ฆฌํŒฉํ† ๋ง(Refactoring) ๊ฒฐ์ • ์˜ค๋žœ๋งŒ์— ๋‹ค์‹œ Unity ํ”„๋กœ์ ํŠธ ๊ธ€์„ ์˜ฌ๋ฆฌ๊ฒŒ ๋˜์—ˆ๋„ค์š”. 4ํ•™๋…„ 1ํ•™๊ธฐ๊ฐ€ ๋๋‚˜ ๋ฐฉํ•™์ด ์™”๊ณ , ์ž ์‹œ ํœด์‹ ๊ธฐ๊ฐ„์„ ๊ฐ€์กŒ์—ˆ์Šต๋‹ˆ๋‹ค. ์ž ๊น ์‰ฌ๊ณ  ๋‚œ ๋’ค์—๋Š” C++ ๋ฌธ๋ฒ• ๊ณต๋ถ€, Python์œผ๋กœ ๋ฐฑ์ค€ ํ’€๊ธฐ, Unreal Engine5 ๋ฐฐ์šฐ๋Š” ๋“ฑ์œผ๋กœ ์‹œ๊ฐ„์„ ๋ณด๋ƒˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‹ค๊ฐ€ ๋ฏธ๋ฃจ๊ณ  ๋ฏธ๋ฃจ๋˜ ๊ธฐ์กด ์นด๋ก (Charon) Unity ํ”„๋กœ์ ํŠธ๋ฅผ ์Šฌ์Šฌ ์† ๋ด์•ผ๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค๋”๋ผ๊ตฌ์š”. ๊ธฐ์กด์— ์ž‘์„ฑํ–ˆ๋˜ ์†Œ์Šค์ฝ”๋“œ ๊ตฌ์กฐ๋Š” ๋„ˆ๋ฌด ๋ง˜์— ์•ˆ ๋“ค์—ˆ๊ณ , ์ด๋Œ€๋กœ ๊ฐ€๋‹ค๊ฐ€๋Š” ์ŠคํŒŒ๊ฒŒํ‹ฐ ์ฝ”๋“œ๊ฐ€ ๋˜๋Š” ๊ฑด ์‹œ๊ฐ„ ๋ฌธ์ œ๋ผ๋Š” ๊ฒŒ ๋ณด์˜€์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์–ด๋–ป๊ฒŒ ํ•˜์ง€ ํ•˜๋‹ค๊ฐ€ ๊ฒฐ๊ตญ ๋ฆฌํŒฉํ† ๋ง์„ ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์–ด์š”. ์ œ์ผ ๋จผ์ € ์ž‘์—…์„ ์‹œ์ž‘ํ•˜๊ธฐ๋กœ ํ•œ ๊ฑด ์ž…๋ ฅ ์‹œ์Šคํ…œ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ „์— ์ปดํฌ๋„ŒํŠธ๋ณ„๋กœ ํด๋ž˜์Šค๋ฅผ ๋‚˜๋ˆˆ ๊ฒƒ๊นŒ์ง€๋Š” ์ข‹์•˜์œผ๋‚˜, ๊ฐˆ์ˆ˜๋ก ..