Graditude Project Wiki : VR Rhythm Game - UAVisonline/Portfolio GitHub Wiki

์กธ์—…ํ”„๋กœ์ ํŠธ : ๊ฐ€์ƒํ˜„์‹ค ๋ฐ ์‚ฌ์šฉ์ž ์‹ ์ฒดํ™œ๋™์„ ๊ฒฐํ•ฉํ•œ ๋ฆฌ๋“ฌ๊ฒŒ์ž„์ œ์ž‘

ํ•ด๋‹น ๊ฒŒ์ž„ ํ”„๋กœ์ ํŠธ๋Š” ํ•„์ž์˜ ํ•œ์–‘๋Œ€ํ•™๊ต ์กธ์—…์„ ์œ„ํ•ด ์ง„ํ–‰๋œ ํ”„๋กœ์ ํŠธ์ด๋ฉฐ, ์ด 3๋ช…์˜ ํŒ€์œผ๋กœ ํ”„๋กœ์ ํŠธ ๊ธฐํš ๋ฐ ์ œ์ž‘์ด ์ง„ํ–‰๋˜์—ˆ๋‹ค.
ํ•ด๋‹น ํ”„๋กœ์ ํŠธ๋Š” VR(Oculus Rift 1)์œผ๋กœ ํ”Œ๋ ˆ์ด ํ•˜๋Š”๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋ฉฐ, ๊ฒŒ์ž„ ๋‚ด 6๊ฐ€์ง€ ์Œ์•…์— ๋”ฐ๋ผ ์•ž์— ๋‚˜์˜ค๋Š” ๋ฌผ์ฒด๋ฅผ ํƒ€์ด๋ฐ์— ๋งž์ถฐ์„œ ์ฃผ๋จน์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ง„ํ–‰๋œ๋‹ค. ๋˜ํ•œ 5๊ฐœ์˜ ์Œ์•…์— ๋Œ€ํ•ด์„œ ์ฃผ๋ณ€ ํ™˜๊ฒฝ ๋‚ด ์—ฐ์ถœ์ด ์กด์žฌํ•˜๋ฉฐ ํ•ด๋‹น ์กธ์—… ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ์ด๋Ÿฌํ•œ ์—ฐ์ถœ์ด ์‚ฌ์šฉ์ž์—๊ฒŒ ์–ด๋– ํ•œ ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š”์ง€ ํŒŒ์•…ํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•œ๋‹ค.

ํ•ด๋‹น ํ”„๋กœ์ ํŠธ๋Š” 2022๋…„ 3์›”๋ถ€ํ„ฐ ๊ฐœ๋ฐœ์ด ์ง„ํ–‰๋˜์—ˆ์œผ๋ฉฐ 2023๋…„ 7์›” ๋ง ๊ฐœ๋ฐœ์ด ์™„๋ฃŒ, 8์›” ์‚ฌ์šฉ์ž ์กฐ์‚ฌ ๋ฐ ๋ณด๊ณ ์„œ ์ž‘์„ฑ์„ ํ†ตํ•ด ํ”„๋กœ์ ํŠธ๊ฐ€ ์™„๋ฃŒ๋˜์—ˆ๋‹ค.

์ด๋ฒˆ Wiki์—์„œ๋Š” ํ•ด๋‹น ํ”„๋กœ์ ํŠธ ๋‚ด์—์„œ ํ•„์ž๊ฐ€ ๋งก์•„ ๊ฐœ๋ฐœํ•œ ์˜์—ญ์— ๋Œ€ํ•ด ์„œ์ˆ ํ•˜๊ณ ์ž ํ•˜๋ฉฐ ์ด๋ฅผ ์š”์•ฝํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

  • ๊ฒŒ์ž„ ๋‚ด ์Œ์•… ๋ฐ ์—ฐ์ถœ, ๋‚œ์ด๋„ ์„ ํƒ ๊ธฐ๋Šฅ

  • ์Œ์•…์— ๋”ฐ๋ฅธ ๊ฐ€์ƒํ˜„์‹ค ์—ฐ์ถœ ํšจ๊ณผ ์ œ์–ด

1. ๊ฒŒ์ž„ ๋‚ด ์Œ์•… ๋ฐ ์—ฐ์ถœ, ๋‚œ์ด๋„ ์„ ํƒ ๊ธฐ๋Šฅ

1.ํ”Œ๋ ˆ์ด๋ฅผ ์œ„ํ•ด์„œ ๊ฒŒ์ž„์€ ์–ด๋– ํ•œ ์ •๋ณด๋ฅผ ๋‹ด์•„์•ผ ํ•˜๋Š”๊ฐ€? (Unity - ScriptableObject)

ํ•ด๋‹น ๊ฒŒ์ž„์€ 6๊ฐ€์ง€ ์Œ์•…์— ๋Œ€ํ•ด ์—ฐ์ถœ, ๋‚œ์ด๋„ ๋ฐ‘ ๋ฉ€ํ‹ฐํ”Œ๋ ˆ์ด ์œ ๋ฌด๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ด์— ๋”ฐ๋ผ ์‹ค์ œ ๊ฒŒ์ž„์˜ ๋‚ด์šฉ์ด ๋ณ€ํ™”ํ•œ๋‹ค. ์šฐ์„  ์ด๋•Œ ์ œ์ž‘์ž๊ฐ€ ์Œ์•… ํ•ญ๋ชฉ์— ๋Œ€ํ•ด์„œ ๊ณ ๋ คํ•  ์š”์†Œ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

1. ์Œ์•… ์ œ๋ชฉ ๋ฐ ์ž‘๊ณก๊ฐ€ ์ด๋ฆ„
2. ์žฌํ‚ท ์ด๋ฏธ์ง€
3. ์Œ์•… ์Œ์›
4. ์Œ์•… ๋‚œ์ด๋„์— ๋”ฐ๋ฅธ ํŒจํ„ด ๋ฐ ํ•ด๋‹น ๋‚œ์ด๋„ level
5. ์Œ์•… ์—ฐ์ถœ ์„ค์ •์— ๋”ฐ๋ฅธ ์—ฐ์ถœ๊ฐ๋… ์˜ค๋ธŒ์ ํŠธ (2. ์Œ์•…์— ๋”ฐ๋ฅธ ๊ฐ€์ƒํ˜„์‹ค ์—ฐ์ถœ ํšจ๊ณผ ์ œ์–ด์—์„œ ์„ค๋ช…)

์ด๋Ÿฌํ•œ ์ •๋ณด๋ฅผ ๋‹ด์„ ์ˆ˜ ์žˆ๋Š” ํด๋ž˜์Šค Script๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์ง€๋งŒ, ์ด๋ฅผ ๊ฒŒ์ž„ ๋‚ด ๊ฐ์ฒด๋กœ ์ €์žฅํ•˜๋ฉด ๊ฐ ์Œ์•…๋งˆ๋‹ค ๊ฒŒ์ž„ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ๋งŒ๋“ค์–ด์•ผํ•˜๋Š” ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•œ๋‹ค. ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๋Š” ๋‹จ์ˆœํ•œ ์ •๋ณด๋ฅผ ์ €์žฅ/๋ถˆ๋Ÿฌ์˜ค๋Š” ์šฉ๋„๋กœ ๊ฒŒ์ž„ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ์—๋Š” ๋ถ€ํ•˜๊ฐ€ ๋œ๋‹ค. ๊ทธ๋ ‡๊ธฐ์— ํ•ด๋‹น ํ”„๋กœ์ ํŠธ์—์„œ๋Š” Unity์˜ ScriptablObject๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์˜€๋‹ค.

ํ”„๋กœ์ ํŠธ์—๋Š” MusicTemplateObject๋ผ๋Š” Script๊ฐ€ ์žˆ์œผ๋ฉฐ ํ•ด๋‹น Script๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ์ฝ”๋“œ ๋‚ด์šฉ์„ ํ†ตํ•ด ์œ„์—์„œ ์–ธ๊ธ‰ํ•œ ์ •๋ณด๋ฅผ ์ €์žฅ ๋ฐ ๊ด€๋ฆฌ, ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

10     [TabGroup("UI Component")] [SerializeField] private Sprite album_jacket;
       ...... // ๋ฐ์ดํ„ฐ ๋ณ€์ˆ˜
27     [BoxGroup("Director Object")] [SerializeField] private GameObject nothing_director;

29     public Sprite get_album_jacket()
       ...... //๋ฐ์ดํ„ฐ ๋ฐ˜ํ™˜ ํ•จ์ˆ˜
96     public GameObject get_nothing_stage()

๋˜ํ•œ ๊ฒŒ์ž„ ๋‚ด ํŒจํ„ด ๋ฐ์ดํ„ฐ(MusicPatternObject Script)๋„ ScriptableObjectํ˜•์‹์œผ๋กœ ํ‹€์„ ์ž‘์„ฑ, ํŒจํ„ด ๋ฐ์ดํ„ฐ ๋‚ด ๊ฐ ๋…ธํŠธ์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ ๋ฐฐ์—ด์„ ๋„˜๊ฒจ์ฃผ๋Š” ๋ฐ˜ํ™˜ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ์‹ค์ œ ๊ฒŒ์ž„๊ณผ ์ƒํ˜ธ์ž‘์šฉ ํ•˜๋„๋ก ํ•˜์˜€๋‹ค. ๋‹จ ํ•ด๋‹น ScriptableObject๋Š” ์ œ์ž‘ํŽธ์˜๋ฅผ ์œ„ํ•ด ์•„๋ž˜์™€ ๊ฐ™์€ ํ•จ์ˆ˜๊ฐ€ ์ถ”๊ฐ€๋˜์–ด์žˆ๋‹ค.

1. set_temp_position : ๋…ธํŠธ ๋ฐ์ดํ„ฐ ๋ฐฐ์—ด์˜ ์œ„์น˜ ๊ตฌ์กฐ์ฒด ๋ฐฐ์—ด๊ฐ’์„ ์ฝ์–ด์„œ Vector ์œ„์น˜๊ฐ’์„ ํ• ๋‹นํ•˜๋Š” ํ•จ์ˆ˜ (3๋ฒˆ ๊ฐœ์„  ํ•จ์ˆ˜๋กœ ๋ณ€๊ฒฝ)
2. apply_reference : reference TextAsset์„ ์ฝ์–ด์„œ ๋…ธํŠธ ๋ฐ์ดํ„ฐ์˜ ์‹œ๊ฐ„ ๋ฐ ์œ„์น˜ ๊ตฌ์กฐ์ฒด ๊ฐ’์„ ์ฝ๋Š” ํ•จ์ˆ˜
3. amke_pattern_using_reference : ์œ„ 2๋ฒˆ ํ•จ์ˆ˜์—์„œ ์ฝ์€ ์‹œ๊ฐ„/์œ„์น˜ ๊ตฌ์กฐ์ฒด ๊ฐ’์„ ์ด์šฉํ•ด ์‹ค์ œ ๋…ธํŠธ ๋ฐ์ดํ„ฐ๋ฅผ ์ฑ„์šฐ๋Š” ํ•จ์ˆ˜


2. ์œ„ ์ •๋ณด๋ฅผ ๊ฒŒ์ž„ ์‹œ์Šคํ…œ์€ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•˜๋Š”๊ฐ€? (AlbumSelect Script ๋ฐ GameStart Script)

์‹ค์ œ ๊ฒŒ์ž„ ๋‚ด์—์„œ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์œ„ ์Œ์•… ์ •๋ณด๋“ค์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•˜๋ฉฐ, ์ด๋ฅผ ์œ„ํ•ด ๊ฒŒ์ž„ ๋‚ด์—์„œ ์„ ํƒ ์˜ค๋ธŒ์ ํŠธ๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ํ•ด๋‹น ์„ ํƒ ์˜ค๋ธŒ์ ํŠธ ๋‚ด์—๋Š” AlbumSelect Script๊ฐ€ ์žˆ์œผ๋ฉฐ, ํ•ด๋‹น Script์—๋Š” ๋…ธ๋ž˜์— ๊ด€ํ•œ ์œ„ ScriptablObject ๋ฐฐ์—ด ๋ฐ ํ˜„์žฌ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋…ธ๋ž˜ index ๋ณ€์ˆ˜ ๋ฐ ๋‚œ์ด๋„, ์—ฐ์ถœ๋ชจ๋“œ, ๋ฉ€ํ‹ฐ์„ ํƒ๋ชจ๋“œ ์—ด๊ฑฐ์ฒด ๋ณ€์ˆ˜๊ฐ€ ์กด์žฌํ•œ๋‹ค.

๊ฒŒ์ž„์ด ์‹œ์ž‘ํ•˜๋ฉด AlbumSelect Script์—์„œ๋Š” ์œ„ 4๊ฐ€์ง€ ๋ณ€์ˆ˜ 4๊ฐœ๋ฅผ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์„ค์ •ํ•˜๋ฉฐ function_about_clip_change()๋ผ๋Š” ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด ์Œ์•… ์žฌ์ƒ ๋ฐ Text UI์— ํ•ด๋‹น ์Œ์•…์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๋ฐ˜์˜ํ•œ๋‹ค. ๊ทธ ๋’ค ์•ž, ๋’ค ๋ฒ„ํŠผ์„ ์ด์šฉํ•ด index๊ฐ’์„ ๋ณ€ํ™˜ํ•˜๊ณ  ์œ„ ํ•จ์ˆ˜๋ฅผ ๋‹ค์‹œ ์‹คํ–‰ํ•ด ์ •๋ณด๋ฅผ ๋ณ€๊ฒฝ, ๋‚œ์ด๋„ ๋ฐ ์—ฐ์ถœ, ๋ฉ€ํ‹ฐํ”Œ๋ ˆ์ด ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋Š” ๊ฒƒ์œผ๋กœ ์—ด๊ฑฐ์ฒด ๋ณ€์ˆ˜๋ฅผ ๋ณ€๊ฒฝํ•œ๋‹ค.

๊ทธ ๋’ค ํ”Œ๋ ˆ์ดํ•  ์Œ์•… ๋ฐ ๋‚œ์ด๋„, ์—ฐ์ถœ์œ ๋ฌด๋ฅผ ๊ณ ๋ฅด๊ณ  ๊ฒŒ์ž„์‹œ์ž‘์„ ๋ˆ„๋ฅด๋ฉด GameStart Script์—์„œ AlbumSelect Script ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์™€ GameManager์— ์ง‘์–ด ๋„ฃ์€ํ›„ Play field๋กœ ์ „ํ™˜ํ•œ๋‹ค. Play field์—์„œ๋Š” GameManager์—์„œ ๋ฐฉ๊ธˆ ๋ฐ›์•„์˜จ ์ •๋ณด๋ฅผ ์ฝ์–ด ์Œ์•… ๋ฐ ๋…ธํŠธ, ์—ฐ์ถœ์žฅ์น˜๋ฅผ ๋ฏธ๋ฆฌ ์ƒ์„ฑํ•˜๋ฉฐ, 3๊ฐ€์ง€ ๋ชจ๋‘ ์ƒ์„ฑ์ด ๋˜์—ˆ์„ ๋•Œ ์Œ์•…์„ ์‹คํ–‰์‹œ์ผœ์„œ ๋…ธํŠธ ๋ฐ ์—ฐ์ถœ์žฅ์น˜๋ฅผ ์‹œ๊ฐ„์— ๋งž์ถฐ ๋™์ž‘์‹œํ‚จ๋‹ค.

2. ์Œ์•…์— ๋”ฐ๋ฅธ ๊ฐ€์ƒํ˜„์‹ค ์—ฐ์ถœ ํšจ๊ณผ ์ œ์–ด

GameManager๋Š” ์‹ค์ œ ๊ฒŒ์ž„ ํ”Œ๋ ˆ์ด Scene์œผ๋กœ ์ด๋™ํ•˜๊ฒŒ ๋˜๋Š” ๊ฒฝ์šฐ, 1-1์—์„œ ์–ธ๊ธ‰ํ•œ 5๋ฒˆ ์—ฐ์ถœ๊ฐ๋…์˜ค๋ธŒ์ ํŠธ๋ฅผ ๋…ธ๋ž˜์— ๋”ฐ๋ผ ๋ถˆ๋Ÿฌ์˜ค๊ฒŒ ๋œ๋‹ค.
ํ•ด๋‹น ์—ฐ์ถœ๊ฐ๋… ์˜ค๋ธŒ์ ํŠธ๋Š” ๋…ธ๋ž˜์— ๋”ฐ๋ฅธ ๋‹ค์–‘ํ•œ ๊ฐ€์ƒ์—ฐ์ถœ์„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ ์ด๋ฅผ ์ ์ ˆํ•œ ์‹œ์ ์— ๋งž์ถ”์–ด ๋ฐœ๋™ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ž‘๋™ํ•œ๋‹ค.
์•„๋ž˜ 2๊ฐ€์ง€ ํ•ญ๋ชฉ์„ ํ†ตํ•ด ํ•ด๋‹น ๋ฐฉ์‹์„ ์–ด๋–ป๊ฒŒ ๋งŒ๋“ค์—ˆ๋Š”์ง€ ์„ค๋ช…ํ•˜๊ณ ์ž ํ•œ๋‹ค.

1.๊ฐ€์ƒํ˜„์‹ค ์—ฐ์ถœ์˜ ์ถ”์ƒํ™”

๋…ธ๋ž˜ ๋‚ด ๊ฐ€์ƒ ์—ฐ์ถœ์€ ๋ถˆ, ์ƒˆ๋กœ์šด ๋น›, ํ•˜๋Š˜๊ต์ฒด, ์˜ค๋ธŒ์ ํŠธ์˜ ์ƒ‰๊น”๋ณ€๊ฒฝ ์™ธ ๋‹ค์–‘ํ•œ ์—ฐ์ถœ๋“ค์ด ์กด์žฌํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ์—ฐ์ถœ์„ ๊ด€๋ฆฌํ•˜๊ณ ์ž ์šฐ์„  ๊ฐ ์—ฐ์ถœ์„ ๊ณตํ†ต์š”์†Œ๋กœ ๋ฌถ์–ด์„œ ์ •๋ฆฌํ•˜๊ณ ์ž ํ–ˆ์œผ๋ฉฐ, ์•„๋ž˜ 3๊ฐ€์ง€๋กœ ๊ฐ€์ƒ ์—ฐ์ถœ์„ ์ •๋ฆฌํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

1. ๋น›๊ณผ ๊ฐ™์€ ๊ด‘์›์„ ๊ฐ€์ง„ ์—ฐ์ถœ์˜ค๋ธŒ์ ํŠธ(LightObject.cs)
2. ํŒŒํ‹ฐํด ํšจ๊ณผ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์—ฐ์ถœ์˜ค๋ธŒ์ ํŠธ(ParticleDirectObject.cs)
3. ๊ทธ ์™ธ ํšจ๊ณผ๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ์—ฐ์ถœ์˜ค๋ธŒ์ ํŠธ(DirectGameObject.cs)

๊ฐ ์—ฐ์ถœ ์˜ค๋ธŒ์ ํŠธ๋Š” ํ•„์ˆ˜ Component๋ฅผ ์š”๊ตฌํ•˜๋ฉฐ, ์ด๋ฅผ ์ด์šฉํ•ด ์—ฐ์ถœ์„ ๊ตฌํ˜„/์žฌ์ƒํ•œ๋‹ค.
๋˜ํ•œ ๊ธฐ๋ณธ์ ์ธ function์ด ์—ฐ์ถœ ์˜ค๋ธŒ์ ํŠธ ๋งˆ๋‹ค ๋”ฐ๋กœ ์กด์žฌํ•˜๋ฉฐ ์ด๋ฅผ ์ •๋ฆฌํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

๊ด‘์›์—ฐ์ถœ ์˜ค๋ธŒ์ ํŠธ (LightObject.cs)

ํ•„์ˆ˜Component : Unity Light Component (Unity ๋‚ด ๊ด‘์› Component๋ฅผ ์ด์šฉํ•ด ๊ฒŒ์ž„ ๋‚ด ๊ด‘์› ์—ฐ์ถœ์„ ์ ์šฉ)
๊ถŒ์žฅComponent : Reference GameObject (์œ„ ๋ฐœ๊ด‘ํšจ๊ณผ๋ฅผ ๊ฐ€์ง„ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ๋งŒ๋“ค๊ณ  ์‹ถ์œผ๋ฉด ํ•ด๋‹น GameObject Reference๊ฐ€ ํ•„์š”)

function
- set_color_instant(Color color) : ๋งค๊ฐœ๋ณ€์ˆ˜ color๊ฐ’์œผ๋กœ ๊ด‘์›์˜ ์ƒ‰๊น” ๋ณ€๊ฒฝ,  
๋˜ํ•œ Ref GameObject๊ฐ€ ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ ํ•ด๋‹น Object์˜ material EmissionColor๋„ ํ•ด๋‹น color๋กœ ๋ณ€๊ฒฝ
ํŒŒํ‹ฐํด ์˜ค๋ธŒ์ ํŠธ (ParticleDirectObject.cs)

ํ•„์ˆ˜Component : Unity ParticleSystem Component List (ํŒŒํ‹ฐํดํšจ๊ณผ๋ฅผ ์žฌ์ƒํ•˜๋Š” Unity Component๋ฅผ ์ด์šฉํ•ด ๊ฒŒ์ž„ ๋‚ด ํŒŒํ‹ฐํด ์—ฐ์ถœ)

function
- play & stop : ์œ„ Component List ๋‚ด ๋ชจ๋“  ํŒŒํ‹ฐํด ํšจ๊ณผ๋ฅผ ์žฌ์ƒ ํ˜น์€ ์ค‘๋‹จ
์—ฐ์ถœ์˜ค๋ธŒ์ ํŠธ (DirectGameObject.cs)

๊ถŒ์žฅ Component : Unity Animator Component (์˜ค๋ธŒ์ ํŠธ์˜ ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ๋ฐ”๊ฟ€๊ฒฝ์šฐ ์‚ฌ์šฉํ•ด์•ผํ•˜๋‚˜, ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ๋ฐ”๊ฟ€ ํ•„์š”์—†๋Š” ์˜ค๋ธŒ์ ํŠธ์˜ ๊ฒฝ์šฐ์—๋Š” ์‚ฌ์šฉํ•˜์ง€ ์•Š์Œ)

function
- play_animation(string name) : name์ด๋ฆ„์˜ Animation์„ ์‹คํ–‰ํ•ด์„œ ์ ์šฉ, ์œ„ Animator Component๊ฐ€ ํ•„์š”
- function0~4 : ๊ฐ€์ƒํ•จ์ˆ˜, ์ƒ์†ํ•œ Script์—์„œ ์˜ค๋ฒ„๋ผ์ด๋”ฉํ•ด ์ƒ์„ธ ๋‚ด์šฉ์„ ๊ตฌํ˜„ 

2.์—ฐ์ถœ ๊ด€๋ฆฌ์ž๋ฅผ ํ†ตํ•œ ์—ฐ์ถœ ์ œ์–ด (DirectorObject)

GameManager๊ฐ€ ์‹ค์ œ Game Scene์œผ๋กœ ์ด๋™ํ•˜๊ฒŒ ๋˜๋Š” ๊ฒฝ์šฐ, ์œ„์—์„œ ๋งํ•œ๋Œ€๋กœ ๋…ธํŠธ ํŒจํ„ด ๋ฐ ์—ฐ์ถœ์žฅ์น˜๋ฅผ ๋งŒ๋“ ๋‹ค๊ณ  ํ•˜์˜€๋‹ค. ์ด ๋•Œ ์—ฐ์ถœ์žฅ์น˜๋Š” 1-1์— 5๋ฒˆ ํ•ญ๋ชฉ์ด GameManager StageObject์— ๋“ค์–ด๊ฐ€๊ฒŒ ๋˜๋ฉฐ, ์ด๋ฅผ Game Scene ๋‚ด GetDirector Object๊ฐ€ GameManager์˜ making_Stage function์„ ํ˜ธ์ถœํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ƒ์„ฑ๋œ๋‹ค.

making_Stage function์€ ์—ฐ์ถœ์žฅ์น˜๋ฅผ ์ƒ์„ฑํ•œ ๋’ค GameManager์˜ game_director ๋ณ€์ˆ˜๋ฅผ true๋กœ ๋งŒ๋“ค์–ด ์—ฐ์ถœ์žฅ์น˜๊ฐ€ ์ค€๋น„๋˜์—ˆ๋‹ค๋Š” ๊ฒƒ์„ ์ „๋‹ฌ, ๋…ธํŠธํŒจํ„ด๋„ ๋น„์Šทํ•œ ๋ฐฉ์‹์„ ํ†ตํ•ด ์ค€๋น„๊ฐ€ ๋˜์—ˆ๋‹ค๋Š” ๊ฒƒ์„ GameManager์—๊ฒŒ ์ „๋‹ฌํ•˜์—ฌ 2๊ฐœ์˜ ๋ณ€์ˆ˜๊ฐ€ ๋ชจ๋‘ true์ธ ๊ฒฝ์šฐ ์‹ค์ œ ์Œ์•…์„ ์žฌ์ƒํ•˜๊ฒŒ ๋œ๋‹ค.

์ด ๋•Œ GameManager๋Š” ์—ฐ์ถœ์žฅ์น˜ DirectorObject์—๊ฒŒ ํ˜„์žฌ ์Œ์•…์˜ ์žฌ์ƒ์‹œ๊ฐ„์„ ๋งค ํ”„๋ ˆ์ž„๋งˆ๋‹ค ๋ณ€์ˆ˜๋กœ ์ „๋‹ฌํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  DirectorObject๋Š” ์ด๋ฅผ ์ด์šฉํ•ด ์ž์‹ ์—๊ฒŒ ์ž…๋ ฅ๋œ ์—ฐ์ถœ์„ ํ™•์ธ, ์Œ์•…์˜ ์‹œ๊ฐ„์ด ์—ฐ์ถœ์ด ๋ฐœ์ƒ๋˜์–ด์•ผํ•  ์‹œ๊ฐ„์„ ๋„˜์—ˆ์„ ๊ฒฝ์šฐ ํ•ด๋‹น ์—ฐ์ถœ์„ ์žฌ์ƒํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ž‘๋™ํ•œ๋‹ค. (DirectorObject.cs : Direct_update function)

DirectorObject Script๋Š” direct_information ์ง๋ ฌํ™” ๊ตฌ์กฐ์ฒด๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ํ•ด๋‹น ๊ตฌ์กฐ์ฒด๋Š” ๋ช…๋ น์–ด(string), ์‹คํ–‰์ง€์ (float), ์ •์ˆ˜์ธ์ž ๋ฐ ์‹ค์ˆ˜์ธ์ž, ์žฌ์ƒ์šฉ ์ •์ˆ˜์ธ์ž 5๊ฐ€์ง€ ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ์—ฐ์ถœ์ œ์ž‘์ž๋Š” DirectorObject ๋‚ด ํ•ด๋‹น ๊ตฌ์กฐ์ฒด ๋ฐฐ์—ด์„ ์ฑ„์›Œ ๋„ฃ๋Š” ๊ฒƒ์œผ๋กœ ์–ด๋–ค ์—ฐ์ถœ์„ ์–ด๋–ป๊ฒŒ ์žฌ์ƒํ•  ์ง€ ์ž‘์„ฑ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

DirectorObject๋Š” ์œ„ 3๊ฐ€์ง€ ์—ฐ์ถœ์˜ค๋ธŒ์ ํŠธ๋ฅผ List ํ˜•ํƒœ๋กœ ์ฐธ์กฐํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ๊ตฌ์กฐ์ฒด์˜ ์ •์ˆ˜์ธ์ž ๋ฐ ๋ช…๋ น์–ด๋ฅผ ์ด์šฉํ•ด ํŠน์ • ์—ฐ์ถœ์˜ค๋ธŒ์ ํŠธ์˜ ์ ‘๊ทผ ๋ฐ ํ•จ์ˆ˜ํ˜ธ์ถœ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ์ด๋ฅผ ์ด์šฉํ•ด ์Œ์•…์˜ ํŠน์ • ์‹œ์ ์—์„œ ์—ฐ์ถœ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์žฌ์ƒ/์ •์ง€/์—ฐ์ถœ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋ฉฐ, Direct_update function์˜ ๋‚ด์šฉ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์ƒˆ๋กœ์šด ๊ณตํ†ต ์—ฐ์ถœ๋ช…๋ น์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

  • DirectObject์˜ function์„ ์˜ค๋ฒ„๋ผ์ด๋”ฉ ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๊ฐœ๋ณ„ ์—ฐ์ถœ ์˜ค๋ธŒ์ ํŠธ์˜ ์„ธ์„ธํ•œ ๋ช…๋ น์„ ๋‚ด๋ฆฌ๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅ, ์ด๋Š” ๊ณตํ†ต ์—ฐ์ถœ๋ช…๋ น 'GameObject_function'์œผ๋กœ ์ฒ˜๋ฆฌ

  • ๋…ธ๋ž˜์— ๋”ฐ๋ฅธ ๋ฉ”์ธ๊ด‘์› ๋ฐ Skybox๊ฐ€ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Œ, ์ด๋Š” DirectorObject์˜ sun_object, first_skybox ๋ณ€์ˆ˜๋ฅผ ์ด์šฉํ•ด ์กฐ์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ด๋ฅผ ์œ„ํ•œ ๊ณตํ†ต ์—ฐ์ถœ๋ช…๋ น๋„ ์กด์žฌ

  • ์ถ”์ƒํ™”๋œ 3๊ฐ€์ง€ ์—ฐ์ถœ์˜ค๋ธŒ์ ํŠธ๋Š” ๊ฐ๊ธฐ ๋‹ค๋ฅธ ๊ณตํ†ต ์—ฐ์ถœ๋ช…๋ น์„ ์‚ฌ์šฉ, ๋”ฐ๋ผ์„œ Particle์— ๋Œ€ํ•ด DirectObject ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ์‹œ์Šคํ…œ ์ƒ ๋ถˆ๊ฐ€๋Šฅ

โš ๏ธ **GitHub.com Fallback** โš ๏ธ