์ฃผ๋ง์— ์ž‘์—…ํ–ˆ๋˜ ๋‚ด์šฉ ์˜ฌ๋ฆผ

1. Instatiate๋กœ ์ƒ์„ฑ๋œ Trigger๋“ค์„ SetActive(false)ํ•˜๊ณ  ์‹ถ์—ˆ๋Š”๋ฐ ์ฒ˜์Œ์— ํ”„๋กœํ† ํƒ€์ž…์ด๋ผ๋„ ๋น ๋ฅด๊ฒŒ ๋Œ€์ถฉ ๋งŒ๋“ค์ž.. ํ•ด์„œ
ย  GameObject.Find๋กœ ์ฐพ์•„์™€์„œ SetActive(false)ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ํ–ˆ์—ˆ์Œ. ์ปดํ“จํ„ฐ๋กœ ํ…Œ์ŠคํŠธ ํ• ๋• ๋ฉ€์ฉกํ–ˆ๋Š”๋ฐ
ย  ํ™•์‹คํžˆ ๋ชจ๋ฐ”์ผ์ด๋ผ ๋š๋š ๋Š๊ธฐ๋”๋ผ.. ํƒ€์ด๋ฐ์ด ์ค‘์š”ํ•œ ๊ฒŒ์ž„์ด๋ผ ์ตœ์ ํ™”๋ฅผ ๋งˆ์Œ๋จน๊ณ  ๋ฆฌํŒฉํ† ๋ง์„ ์ง„ํ–‰ํ•จ
ย  - ์›๋ž˜ ์ž‘๋™๋ฐฉ์‹์ด TriggerEnter/Stay ์—์„œ GameObject.name์„ ์ €์žฅํ•˜๊ณ  ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉดย Find(name).SetActiveํ•˜๋Š” ๋ฐฉ์‹์ด์˜€์Œ
ย  - ๊ฐ–์€ ๋ฐฉ๋ฒ•์„ ์‹œ๋„ํ•ด๋ณด๊ณ  ๊ฒฐ๊ตญ์—” ์˜ค๋ธŒ์ ํŠธํ’€๋ง ๋ฐฉ์‹์—์„œ ์˜๊ฐ์„ ์–ป์–ด Queue ๋ฐฐ์—ด์— ๋„ฃ๊ณ  ๋นผ๊ธฐ๋กœ ๋งˆ์Œ๋จน์Œ
ย  - nullable๋กœ Queue?.Dequeue() -> Queue๋ฅผ ๋นผ๋‚ด๊ธฐ์ „ Queue์ปฌ๋ ‰์…˜์ด ์—†์œผ๋ฉด ์ž‘๋™ํ•˜๊ณ  ์‹ถ์—ˆ์œผ๋‚˜ ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ null ๊ด€๋ จ๋˜์„œ ์•„์˜ˆ ์ž‘๋™ํ•˜์ง€ ์•Š์Œ
ย  - Queue๋ฅผ ๊ฒ‰ํ•ฅ๊ธฐ์‹์œผ๋กœ Enqueue, Dequeue๋งŒ ์•Œ๊ณ  ์žˆ์—ˆ๋Š”๋ฐ ์ž์„ธํžˆ ์ฐพ์•„๋ณด๋‹ˆ๊นŒ Peek๊ณผ Count๋ฅผ ๋ณด๊ณ  ๊นจ๋‹ฌ์Œ
ย  ๊ฒฐ๊ตญ ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ๋ฐฉํ–ฅ(์ฝœ๋ผ์ด๋” ์ถฉ๋Œ์‹œ OnTrigger ๋ฉ”์†Œ๋“œ์—์„œ Queue๋ฐฐ์—ด์„ ๋„ฃ์—ˆ๋‹ค ๋บ๋‹ค ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๊ณ , ๋ฒ„ํŠผ์„ ์ตœ์ดˆ๋กœ ๋ˆŒ๋ €์„๋•Œ ์ˆœ๊ฐ„์ ์œผ๋กœ ์‹คํ–‰ํ•˜๋Š”)
ย  ์œผ๋กœ ์™„์„ฑํ–ˆ๋‹ค.. ์•ž์œผ๋กœ๋Š” ๊ฐ„๋‹จํ•œ๊ฑฐ ํ•˜๋‚˜๋ฅผ ๋งŒ๋“ค๋”๋ผ๋„ ๋ฏธ๋ž˜๋ฅผ ์ƒ๊ฐํ•ด์„œ ์„ค๊ณ„ํ•˜๋ ค๊ตฌ..ใ… 

์ž์„ธํ•œ ๋กœ์ง์€ ๋‹ค์Œ๊ณผ ๊ฐ™์•„

privateย voidย OnTriggerEnter2D(Collider2Dย other)
ย ย ย ย {
ย ย ย ย ย ย ย ย ifย (other.CompareTag("TriggerEvent"))
ย ย ย ย ย ย ย ย {
ย ย ย ย ย ย ย ย ย ย ย ย _triggerQueue.Enqueue(other.gameObject);
ย ย ย ย ย ย ย ย }
ย ย ย ย }

privateย voidย OnTriggerExit2D(Collider2Dย other)
ย ย ย ย {
ย ย ย ย ย ย ย ย ifย (other.CompareTag("TriggerEvent"))
ย ย ย ย ย ย ย ย {
ย ย ย ย ย ย ย ย ย ย ย ย //ย Queue.Clear();ย ์‚ฌ์šฉ์‹œย ๊ทผ์ ‘ํ•œย Trigger์—์„œย ํ‚ค๊ฐ€ย ์”นํžˆ๋Š”ย ํ˜„์ƒ์ดย ๋ฐœ์ƒย Dequeueย ๊ถŒ์žฅ!
ย ย ย ย ย ย ย ย ย ย ย ย _triggerQueue.Dequeue();
ย ย ย ย ย ย ย ย }
ย ย ย ย }

publicย voidย TriggerSetActive()
ย ย ย ย {
ย ย ย ย ย ย ย ย //ย Queueย ๋ฐฐ์—ด์ดย ์—†๋”๋ผ๋„ย ์‹คํ–‰๊ฐ€๋Šฅํ•˜๊ฒŒย ๋ฐ”๊ฟ”์•ผํ•จย ->ย nullable์ดย ์•„๋‹Œย Queue.Countย !=ย 0ย ํ™œ์šฉ
ย ย ย ย ย ย ย ย ifย (_triggerQueue.Countย !=ย 0)
ย ย ย ย ย ย ย ย {
ย ย ย ย ย ย ย ย ย ย ย ย _triggerQueue.Peek().SetActive(false);
}
}


2. ์ถ”๊ฐ€์ ์œผ๋กœ Score, Time, Combo๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋งค๋‹ˆ์ €๋ฅผ ๋งŒ๋“ค์–ด์คฌ์–ด. ๋‚˜์ค‘์— ์บ๋ฆญํ„ฐ๋‚˜ ์•„์ดํ…œ์— ๋ณด๋„ˆ์Šคํšจ๊ณผ๋ฅผ ์ฃผ๊ธฐ์œ„ํ•ด ์ง€๊ธˆ์€ ์ƒ์ˆ˜๋กœ ํ–ˆ์ง€๋งŒ

ย  ๋ณ€์ˆ˜๋ฅผ ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด ๋†”์•ผ๊ฒ ๋‹ค


์•ž์œผ๋กœ ํ•ด์•ผ ํ•  ์ผ๋“ค์ด ์‚ฐ๋”๋ฏธ์ง€๋งŒ.. ์ฐจ๊ทผ์ฐจ๊ทผ ํ•˜๋‚˜์”ฉ ํ•ด๋ณด๋ ค๊ตฌ..


<๊ตฌํ˜„์˜ˆ์ •>

1. Combo Text ๋žœ๋ค ์œ„์น˜๋กœ ์ด๋™ ๋ฐ Fade ํšจ๊ณผ

2. ์ผ์‹œ์ •์ง€, ์‚ฌ์šด๋“œ ์กฐ์ • ๋ฐ ํ™˜๊ฒฝ์„ค์ • ๋งค๋‹ˆ์ €

3. Score ๊ฐ’์— ๋”ฐ๋ฅธ ๋‚œ์ด๋„ ์ƒํ–ฅ(Trigger ํฌ๊ธฐ ๊ฐ์†Œ ๋ฐ ๊ฐ์†Œ์— ๋”ฐ๋ฅธ ์ƒ์„ฑ๊ฐ„๊ฒฉ/๊ฐฏ์ˆ˜ ์กฐ์ •)

4. Trigger ๋ฒ”์œ„์— ๋งž๊ฒŒ ๋ฒ„ํŠผ์„ ๋ˆŒ๋ €์„๋•Œ, ์‹œ๊ฐ„ ๋ณด๋„ˆ์Šค(์—ฐ์žฅ)

5. Time์„ ๊ฒŒ์ด์ง€ ํ˜•์‹์œผ๋กœ UI๋กœ ํ‘œํ˜„ํ•˜๊ณ , ๋‚œ์ด๋„๊ฐ€ ์˜ฌ๋ผ๊ฐˆ์ˆ˜๋ก ์–ด๋ ค์›Œ์ง€๊ฒŒ๋” ๋ฐธ๋Ÿฐ์‹ฑ ๋ฐ ๋กœ์ง ๊ตฌํ˜„(๊ฒŒ์ž„ ํ‰๊ท ์‹œ๊ฐ„ 3๋ถ„์ •๋„ ์ƒ๊ฐ์ค‘)



ํ‰์ผ์—” ๊ฐœ๋ฐœ๊ณผ ๊ด€๋ จ์—†๋Š” ๋ณธ์—…์„ ํ•˜๋А๋ผ ์ž์ฃผ ๋ชป์˜ฌ๊บผ๊ฐ™๊ธดํ•œ๋ฐ.. ์•ž์œผ๋กœ ์—ด์‹ฌํžˆ ํ•ด๋ณผ๊ป˜ ์‘์›ํ•ด์ฃผ๋ผ!


viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73cec8ffa11d0283137a147df66c0ff0e9ff48c5b5e7a56d200939b19b61688d291fce0e7b9dc5f823ccf70fb1fa9aabc5c46026fcac1a27b62a6ac


๋‚ด์ผ๋ถ€ํ„ด ์ ์‹ฌ์‹œ๊ฐ„์— ์‹œ๊ฐ„๋‚จ์„๋•Œ ํšŒ์‚ฌ์—์„œ ์ฑ…์ข€ ๋ด์•ผ์ง€ใ…‹ใ…‹ ๊ตฌํ˜„์€ ์–ด์ฐŒ ํ•˜๊ฒ ๋Š”๋ฐ ์•„์ง ๋„ˆ๋ฌด ๋ฏธ์ˆ™ํ•˜๋‹ค